blob: 9cd26cfd05db22d6a4ca653f18d477753e650142 [file] [log] [blame]
test {
jvmArgs "-ea", "-Xms${groovyJUnit_ms}", "-Xmx${groovyJUnit_mx}", "-XX:PermSize=${groovyJUnit_permSize}", "-XX:MaxPermSize=${groovyJUnit_maxPermSize}"
def headless = System.properties['java.awt.headless']
if (headless == 'true') {
systemProperties 'java.awt.headless': "true"
}
def testdb = System.properties['groovy.testdb.props']
if (testdb) {
systemProperties 'groovy.testdb.props': testdb
}
systemProperties 'apple.awt.UIElement': "true", "javadocAssertion.src.dir": './src/main'
systemProperties "gradle.home": gradle.gradleHomeDir // this is needed by the security.policy
doFirst {
// this is needed by the security.policy. We set it at execution time to avoid resolving a configuration when not needed.
systemProperties "gradle.junit": configurations.testCompile.fileCollection { dep -> dep.name == 'junit' }.singleFile.absolutePath
}
classpath = files('src/test') + classpath
forkEvery = 1
scanForTestClasses = false
ignoreFailures = false
resultText = ''
includes = includePattern
}
tasks.addRule("Pattern: testSingle<Name> will test **/<Name>.class") {String taskName ->
if (taskName.startsWith("testSingle")) {
tasks.add(taskName).dependsOn(test)
test.includes = ['**/' + taskName.substring(10) + '.class']
test.outputs.upToDateWhen { false }
}
}
def getIncludePattern() {
def baseInclude = ['UberTestCaseBugs.class',
'UberTestCaseGroovySourceCodehausPackages.class',
'UberTestCaseGroovySourceRootPackage.class',
"UberTestCaseGroovySourceSubPackages.class",
"UberTestCaseJavaSourceCodehausPackages.class",
"UberTestCaseJavaSourceGroovyPackagesNonSecurity.class",
"UberTestCaseTCK.class",
"UberTestCaseJavaSourceGroovyPackagesSecurity.class"]
if (System.properties['junit.network']) {
baseInclude += ['groovy/grape/*Test.class']
}
if (isJava16()) {
baseInclude += [
"UberTestCaseGroovySourceSubPackages_VM6.class",
"UberTestCaseGroovySourceCodehausPackages_VM6.class"
]
}
baseInclude
}
task compareTests << {
def uberTestCases = ['UberTestCaseBugs.xml',
'UberTestCaseGroovySourceCodehausPackages.xml',
'UberTestCaseGroovySourceRootPackage.xml',
"UberTestCaseGroovySourceSubPackages.xml",
"UberTestCaseJavaSourceCodehausPackages.xml",
"UberTestCaseJavaSourceGroovyPackagesNonSecurity.xml",
"UberTestCaseTCK.xml",
"UberTestCaseGroovySourceSubPackages_VM6.xml",
"UberTestCaseJavaSourceGroovyPackagesSecurity.xml"]
uberTestCases.each { testCaseName ->
compareAntWithGradle("target/test-reports/TEST-$testCaseName" as File, "target/test-results/TEST-$testCaseName" as File)
}
}
def compareAntWithGradle(File antResult, File gradleResult) {
Set antTests = testsRun(antResult)
Set gradleTests = testsRun(gradleResult)
Set commonTests = antTests.intersect(gradleTests)
Set antOnly = antTests - commonTests
Set gradleOnly = gradleTests - commonTests
if (antOnly) {
println "Tests only run by Ant: " + antOnly
}
if (gradleOnly) {
println "Tests only run by Gradle: " + gradleOnly
}
}
Set testsRun(File resultsXmlFile) {
def testsuite = new XmlParser().parse(resultsXmlFile)
Set tests = []
testsuite.testcase.each { testcase ->
tests.add("${testcase.'@classname'}:${testcase.'@name'}")
}
tests
}