1512bf21f679b01fb940f05101e695899bb87747
[idea/community.git] / build / scripts / common_tests.gant
1 /*
2  * Copyright 2000-2012 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome
17
18 includeTargets << new File("${guessHome(this)}/build/scripts/utils.gant")
19 includeTargets << new File("${guessHome(this)}/build/scripts/cucumber-tests.gant")
20
21 requireProperty("out", "$home/out")
22
23 target(compile: "Compile project") {
24   ant.delete(failonerror: false) {
25     fileset(dir: "$home/reports")
26     fileset(dir: "$home/bin", includes: "*.hprof")
27   }
28
29   loadProject()
30   prepareOutputFolder()
31
32   if (!isDefined("avoid.project.rebuild")) {
33     projectBuilder.cleanOutput()
34     projectBuilder.buildAll()
35   }
36 }
37
38 private pass(List<String> args, String prop) {
39   if (isDefined(prop)) {
40     args << "-D$prop=${p(prop)}"
41   }
42 }
43
44 target('run_tests': 'Run java tests') {
45   depends([compile])
46
47   def classpathFile = "$home/junit.classpath"
48   List<String> testRuntimeClasspath = projectBuilder.moduleRuntimeClasspath(findModule("community-main"), true)
49   new File(classpathFile).text = testRuntimeClasspath.findAll({ new File((String)it).exists() }).join('\n')
50
51   testcases.each { testCase ->
52     List<String> jvmArgs = [
53       "-Dclasspath.file=${classpathFile}",
54       "-Didea.platform.prefix=Idea",
55       "-Dbootstrap.testcases=$testCase"
56     ]
57
58     [
59       "idea.test.group",
60       "idea.test.patterns",
61       "idea.fast.only",
62       "idea.coverage.enabled.build",
63       "teamcity.build.tempDir",
64       "teamcity.tests.recentlyFailedTests.file"
65     ].each { pass(jvmArgs, it) }
66
67     System.getProperties().entrySet().each {
68       if (it.key.startsWith("pass.")) {
69         def trimmed = it.key.substring("pass.".length());
70         jvmArgs << "-D${trimmed}=${it.value}"
71       };
72     }
73     jvmArgs.addAll(commonJvmArgsForTests())
74     if (isDefined("jvm_args")) {
75       jvmArgs.addAll(jvm_args)
76     }
77
78     projectBuilder.info("Starting JUnit $testCase, JVM options: $jvmArgs")
79     ant.junit(fork: "yes", showoutput: "true", logfailedtests: false) {
80       jvmArgs.each {
81         jvmarg(value: it)
82       }
83
84       classpath {
85         projectBuilder.moduleRuntimeClasspath(findModule("tests_bootstrap"), false).each {
86           pathelement(location: it)
87         }
88         pathelement(location: "${jdkHome}/lib/tools.jar")
89       }
90
91       test(name: 'com.intellij.tests.BootstrapTests')
92     }
93   }
94 }
95
96 target('default' : "Run all tests") {
97   depends([compile, run_tests, run_cucumber_tests])
98 }