summaryrefslogtreecommitdiff
path: root/build/scripts/common_tests.gant
blob: eb21bac9d8a4e0767372289bdd6cb4b8b9643634 (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
91
92
/*
 * Copyright 2000-2012 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome

includeTargets << new File("${guessHome(this)}/build/scripts/utils.gant")
includeTargets << new File("${guessHome(this)}/build/scripts/cucumber-tests.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
  projectBuilder.cleanOutput()
  projectBuilder.buildAll()
}

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

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

  def classpathFile = "$home/junit.classpath"
  List<String> testRuntimeClasspath = projectBuilder.moduleRuntimeClasspath(findModule("community-main"), true)
  new File(classpathFile).text = testRuntimeClasspath.findAll({ new File((String)it).exists() }).join('\n')

  testcases.each { testCase ->
    ant.junit(fork: "yes", showoutput: "true", logfailedtests: false) {
      jvmarg(value: "-Dclasspath.file=${classpathFile}")
      pass("idea.test.group")
      pass("idea.test.patterns")
      pass("idea.fast.only")
      pass("idea.coverage.enabled.build")
      pass("teamcity.build.tempDir")
      pass("teamcity.tests.recentlyFailedTests.file")
      jvmarg(value: "-Didea.platform.prefix=Idea")

      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) }

      jvmarg(value: "-Dbootstrap.testcases=$testCase")

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

      classpath {
        projectBuilder.moduleRuntimeClasspath(findModule("tests_bootstrap"), false).each {
          pathelement(location: it)
        }
        pathelement(location: "${jdkHome}/lib/tools.jar")
      }

      test(name: 'com.intellij.tests.BootstrapTests')
    }
  }
}

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