diff options
author | Tor Norbye <tnorbye@google.com> | 2014-09-02 12:24:58 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2014-09-08 19:33:20 +0000 |
commit | 118658926a59fe76b2d7c6b0a5cbdcb34b097a9f (patch) | |
tree | 8360f6cf86ae05a0cc192f1afaed57372eac5a8c | |
parent | 88d9b7d863d313a6077f71215d90d75141fbcdc1 (diff) | |
download | idea-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-- | .gitignore | 2 | ||||
-rw-r--r-- | build.xml | 7 | ||||
-rw-r--r-- | build/scripts/gui_tests.gant | 90 |
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=""-Dgant.script=@{script}""/> <arg line=""-Dteamcity.build.tempDir=${tmp.dir}""/> @@ -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) |