summaryrefslogtreecommitdiff
path: root/build/scripts/gui_tests.gant
blob: a1713874cf769724dd0257eb94931edb175a1ca4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Based on tests.gant but with the includeTargets of common_tests inlined
// below (and with some changes to invoke our GUI test suite instead
import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome

includeTargets << new File("${guessHome(this)}/build/scripts/utils.gant")

requireProperty("out", "$home/out")

target(check: "Ensure the environment is configured") {
  tempDir = p("teamcity.build.tempDir")
}

target(compile: "Compile project") {
  ant.delete(failonerror: false) {
    fileset(dir: "$home/reports")
    fileset(dir: "$home/bin", includes: "*.hprof")
  }

  loadProject()
  projectBuilder.targetFolder = out
  if (!isDefined("skip_build")) {
    projectBuilder.cleanOutput()
    projectBuilder.buildAll()
  }
}

private pass(String prop) {
  if (isDefined(prop)) {
    ant.jvmarg(value: "-D$prop=${p(prop)}")
  }
}

target('run_ui_tests': 'Run java tests') {
  depends([check, compile])

  ant.junit(fork: "yes", showoutput: "true", logfailedtests:false, printsummary: "true") {
    pass("idea.test.group")
    pass("idea.test.patterns")
    pass("idea.fast.only")
    pass("teamcity.build.tempDir")
    pass("teamcity.tests.recentlyFailedTests.file")

    System.getProperties().entrySet().each {
      if (it.key.startsWith("pass.")) {
        def trimmed = it.key.substring("pass.".length());
        jvmarg(value: "-D${trimmed}=${it.value}");
      };
    }

    commonJvmArgs().each { jvmarg(value: it) }

    if (isDefined("jvm_args")) {
      jvm_args.each { jvmarg(value: it) }
    }

    classpath {
      projectBuilder.moduleRuntimeClasspath(findModule("community-main"), true).each {
        pathelement(location: it)
      }
      pathelement(location: "${jdkHome}/lib/tools.jar")
    }

    formatter(type: "plain")
    formatter(type: "xml")

    testcases.each {
      test (name: it)
    }
  }
}

target('default' : "Run all UI tests") {
  depends([compile, run_ui_tests])
  depends([run_ui_tests])
}

// To run just your own tests, you can for example write
//setProperty("testcases", ["com.android.tools.idea.tests.gui.layout.LayoutPreviewTest","com.android.tools.idea.tests.gui.layout.LayoutEditorTest"])
setProperty("testcases", ["com.android.tools.idea.tests.gui.GuiTestSuite"])

def isMac = System.getProperty("os.name").toLowerCase().startsWith("mac")
def args = [
        "-Xmx2048m",
        "-XX:MaxPermSize=1024m",
        "-XX:ReservedCodeCacheSize=96m",
        "-XX:+UseCodeCacheFlushing"
]
if (isMac) args << "-d32";

setProperty("jvm_args", args)