| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| allprojects { |
| tasks.withType(Test) { |
| def jdk8 = ['-XX:+UseConcMarkSweepGC'] |
| def jdk9 = ['-Djava.locale.providers=COMPAT,SPI'] |
| // def jdk9 = ['-Djava.locale.providers=COMPAT,SPI', '--illegal-access=debug'] |
| def common = ['-ea', "-Xms${groovyJUnit_ms}", "-Xmx${groovyJUnit_mx}", "-Duser.language=en" ] |
| if (JavaVersion.current().isJava9Compatible()) { |
| jvmArgs (*common, *jdk9) |
| systemProperty "groovy.force.illegal.access", findProperty("groovy.force.illegal.access") |
| } else if (JavaVersion.current().isJava8Compatible()) { |
| jvmArgs (*common, *jdk8) |
| } else { |
| jvmArgs (*common, "-XX:PermSize=${groovyJUnit_permSize}", "-XX:MaxPermSize=${groovyJUnit_maxPermSize}") |
| } |
| def headless = System.properties['java.awt.headless'] |
| if (headless == 'true') { |
| systemProperties 'java.awt.headless': 'true' |
| } |
| systemProperties 'apple.awt.UIElement': 'true', 'javadocAssertion.src.dir': './src/main' |
| |
| forkEvery = 50 |
| maxParallelForks = isRunningOnCI() ? 1 : Runtime.runtime.availableProcessors() |
| scanForTestClasses = true |
| ignoreFailures = false |
| testLogging { |
| exceptionFormat = 'full' |
| // uncomment the following line if you need more logging |
| // events "failed", "started" |
| } |
| } |
| |
| // create an Indy test suite |
| if (rootProject.indyCapable()) { |
| def dependencies = configurations.testRuntime.incoming.dependencies.findAll { |
| it.name.startsWith('groovy') |
| }.collect { |
| it.name |
| } |
| task testWithIndy(type: Test) { |
| systemProperties 'groovy.target.indy': true |
| dependsOn 'jarWithIndy' |
| dependencies.each { dependsOn "${it}:jarWithIndy" } |
| classpath = classpath - files(jar.archivePath, *dependencies.collect { project(it).jar }) + |
| files({ [jarWithIndy.archivePath, *dependencies.collect { project(it).jarWithIndy }] }) |
| } |
| task testAll { |
| description = "Runs both the normal and indy test suites" |
| dependsOn test, testWithIndy |
| } |
| check.dependsOn testWithIndy |
| } |
| |
| sourceSets { |
| test { |
| groovy { |
| srcDirs += 'src/spec/test' |
| } |
| resources { |
| srcDirs += 'src/spec/test-resources' |
| } |
| } |
| } |
| } |
| |
| tasks.withType(Test) { |
| def testdb = System.properties['groovy.testdb.props'] |
| if (testdb) { |
| systemProperties 'groovy.testdb.props': testdb |
| } |
| systemProperties 'gradle.home': gradle.gradleHomeDir // this is needed by the security.policy |
| |
| classpath = files('src/test') + classpath |
| exclude buildExcludeFilter(it.name == 'test') |
| ext.resultText = '' |
| doLast { |
| ant.delete { |
| fileset(dir: '.', includes: '*.class') |
| } |
| } |
| } |
| |
| boolean isRunningOnCI() { |
| new File('.').absolutePath =~ /teamcity|jenkins|hudson|travis/ |
| } |
| |
| logger.lifecycle "Detected ${isRunningOnCI() ? 'Continuous Integration environment' : 'development environment'}" |
| |
| tasks.addRule('Pattern: testSingle<Name> will test **/<Name>.class') { String taskName -> |
| if (taskName.startsWith('testSingle')) { |
| tasks.create(taskName).dependsOn(test) |
| test.includes = ['**/' + taskName.substring(10) + '.class'] |
| test.outputs.upToDateWhen { false } |
| } |
| } |
| |
| def buildExcludeFilter(boolean legacyTestSuite) { |
| def excludes = [] |
| |
| // if no network available, disable Grapes |
| if (!System.properties['junit.network']) { |
| excludes << 'groovy/grape/' |
| } |
| |
| if (legacyTestSuite) { |
| // indy tests will only be executed in indy test suite |
| excludes += ['indy', 'Indy'] |
| } else { |
| // tests not passing with indy : investigation required! |
| excludes += ['Log4j2Test', 'ASTTransformationCustomizerTest'] |
| } |
| |
| return { f -> |
| excludes.any { f.file =~ it } |
| } |
| } |
| |
| // some tests require Jars, but those are not allowed in the source directory |
| // by the Apache policy, so we need to build them and add them to the test |
| // resources classpath |
| |
| ext.extModuleFixtureDir = file("$projectDir/src/test-fixtures/extmodule") |
| ext.extModuleOutputDir = file("$buildDir/testFixtures/extmodule") |
| ext.extModuleRepoDir = file("$extModuleOutputDir/repo") |
| |
| task compileTestExtensionModule(type: JavaCompile) { |
| classpath = files(jar) |
| source fileTree("$extModuleFixtureDir/src/main/java") |
| destinationDir = file("$extModuleOutputDir/classes") |
| sourceCompatibility = 1.7 |
| targetCompatibility = 1.7 |
| } |
| |
| task testExtensionModuleJar(type: Jar) { |
| description = 'Builds a sample extension module used in tests' |
| dependsOn compileTestExtensionModule |
| baseName = 'module-test' |
| version = '1.4' |
| from { compileTestExtensionModule.destinationDir } |
| from files("$extModuleFixtureDir/src/main/resources") |
| // emulate Maven repo format for output |
| destinationDir = file("$extModuleRepoDir/jars/module-test/module-test/${version}") |
| } |
| |
| tasks.withType(Test) { |
| dependsOn(testExtensionModuleJar) |
| classpath += files(extModuleRepoDir) |
| } |