summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2014-09-02 12:24:58 -0700
committerTor Norbye <tnorbye@google.com>2014-09-08 19:33:20 +0000
commit118658926a59fe76b2d7c6b0a5cbdcb34b097a9f (patch)
tree8360f6cf86ae05a0cc192f1afaed57372eac5a8c
parent88d9b7d863d313a6077f71215d90d75141fbcdc1 (diff)
downloadidea-118658926a59fe76b2d7c6b0a5cbdcb34b097a9f.tar.gz
Add script for running UI tests from the command line
Usage: $ cd tools/idea $ ant guiTests Test results are written to build/TEST-* Change-Id: I5e395e4348eb70ef65ae819277555ee95642bdfb (cherry picked from commit 7c48b9da9b078f4b7e1282cf906632af9909b7db)
-rw-r--r--.gitignore2
-rw-r--r--build.xml7
-rw-r--r--build/scripts/gui_tests.gant90
3 files changed, 97 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 6aba63e3ef5f..8ccf95b67a7e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,5 @@
.jps-build-data
/bin/build-log.xml
/bin/build.log
+/androidStudio
+/build/TEST*
diff --git a/build.xml b/build.xml
index 3df0948be156..5a9fc1939f51 100644
--- a/build.xml
+++ b/build.xml
@@ -33,10 +33,9 @@
<attribute name="test.patterns" default="" />
<sequential>
<java failonerror="true" jar="${project.home}/lib/ant/lib/ant-launcher.jar" fork="true">
- <jvmarg line="-Xmx1424m -XX:MaxPermSize=352m"/>
+ <jvmarg line="-Xmx2048m -XX:MaxPermSize=512m"/>
<jvmarg value="-Dout=${out.dir}" />
<jvmarg value="-DbuildNumber=${buildId}" />
- <jvmarg line="-Xmx612m -XX:MaxPermSize=152m"/>
<sysproperty key="java.awt.headless" value="true"/>
<arg line="&quot;-Dgant.script=@{script}&quot;"/>
<arg line="&quot;-Dteamcity.build.tempDir=${tmp.dir}&quot;"/>
@@ -56,6 +55,10 @@
<call_gant script="${project.home}/build/scripts/tests.gant" test.patterns="org.jetbrains.android.*;com.android.tools.idea.*;com.google.gct.*"/>
</target>
+ <target name="guiTests" depends="init">
+ <call_gant script="${project.home}/build/scripts/gui_tests.gant"/>
+ </target>
+
<!-- The build task creates an updater.jar in ${out.dir}. This task bundles log4j & the updater into a single jar -->
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="${project.home}/build/lib/jarjar-1.0.jar"/>
<target name="fullupdater" depends="build">
diff --git a/build/scripts/gui_tests.gant b/build/scripts/gui_tests.gant
new file mode 100644
index 000000000000..a1713874cf76
--- /dev/null
+++ b/build/scripts/gui_tests.gant
@@ -0,0 +1,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)