From e7a85bf6b627d52d7e91d81f8fe88348b74d9456 Mon Sep 17 00:00:00 2001 From: Sterling Greene Date: Thu, 23 Sep 2021 10:20:16 -0400 Subject: [PATCH 1/6] Update release notes and compatibility docs for JDK17 support --- subprojects/docs/src/docs/release/notes.md | 4 ++++ subprojects/docs/src/docs/userguide/compatibility.adoc | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/subprojects/docs/src/docs/release/notes.md b/subprojects/docs/src/docs/release/notes.md index 83047b5ac1c6..74ef1ecf4b8c 100644 --- a/subprojects/docs/src/docs/release/notes.md +++ b/subprojects/docs/src/docs/release/notes.md @@ -66,6 +66,10 @@ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ## New features and usability improvements +### Support for Java 17 + +Gradle 7.3 supports compiling, testing and running on Java 17. + ### Tooling API improvements diff --git a/subprojects/docs/src/docs/userguide/compatibility.adoc b/subprojects/docs/src/docs/userguide/compatibility.adoc index 999ddb621797..15bf822717cd 100644 --- a/subprojects/docs/src/docs/userguide/compatibility.adoc +++ b/subprojects/docs/src/docs/userguide/compatibility.adoc @@ -17,7 +17,7 @@ The sections below describe Gradle's compatibility with several integrations. Other versions not listed here may or may not work. == Java -A Java version between 8 and 16 is required to execute Gradle. Java 17 and later versions are not yet supported. +A Java version between 8 and 17 is required to execute Gradle. Java 18 and later versions are not yet supported. Java 6 and 7 can still be used for <>. @@ -38,6 +38,7 @@ For older Gradle versions, please see the table below which Java version is supp |14|6.3 |15|6.7 |16|7.0 +|17|7.3 |=== == Kotlin From b666f7b744e4aea8584e1acf670481ce719e8105 Mon Sep 17 00:00:00 2001 From: Sterling Greene Date: Thu, 23 Sep 2021 14:13:57 -0400 Subject: [PATCH 2/6] Update the bundled version of Groovy to 3.0.9 --- build-logic/build-platform/build.gradle.kts | 2 +- .../modules/extension/ExternalModulesExtension.kt | 2 +- .../tasks/templates/library-versions.properties | 2 +- subprojects/docs/src/docs/userguide/compatibility.adoc | 2 +- .../docs/userguide/migration/upgrading_version_7.adoc | 1 + .../library-publishing/groovy/my-library/build.gradle | 2 +- .../kotlin/my-library/build.gradle.kts | 2 +- .../AbstractSourcesAndJavadocJarsIntegrationTest.groovy | 2 +- .../groovy/org/gradle/api/tasks/GroovyRuntimeTest.groovy | 2 +- ...GradleRunnerConsoleInputEndUserIntegrationTest.groovy | 9 +++++++-- 10 files changed, 16 insertions(+), 10 deletions(-) diff --git a/build-logic/build-platform/build.gradle.kts b/build-logic/build-platform/build.gradle.kts index b08d7670ed90..df38d0d35dd2 100644 --- a/build-logic/build-platform/build.gradle.kts +++ b/build-logic/build-platform/build.gradle.kts @@ -4,7 +4,7 @@ plugins { // Here you should declare versions which should be shared by the different modules of buildSrc itself val javaParserVersion = "3.18.0" -val groovyVersion = "3.0.8" +val groovyVersion = "3.0.9" val asmVersion = "9.2" val kotlinVersion = providers.gradleProperty("buildKotlinVersion") diff --git a/build-logic/dependency-modules/src/main/kotlin/gradlebuild/modules/extension/ExternalModulesExtension.kt b/build-logic/dependency-modules/src/main/kotlin/gradlebuild/modules/extension/ExternalModulesExtension.kt index 1911e546740d..2a97f0f63d3d 100644 --- a/build-logic/dependency-modules/src/main/kotlin/gradlebuild/modules/extension/ExternalModulesExtension.kt +++ b/build-logic/dependency-modules/src/main/kotlin/gradlebuild/modules/extension/ExternalModulesExtension.kt @@ -20,7 +20,7 @@ import gradlebuild.modules.model.License abstract class ExternalModulesExtension { - val groovyVersion = "3.0.8" + val groovyVersion = "3.0.9" val kotlinVersion = "1.5.31" fun futureKotlin(module: String) = "org.jetbrains.kotlin:kotlin-$module:$kotlinVersion" diff --git a/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties b/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties index 7f3f772fe602..3564e068f198 100644 --- a/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties +++ b/subprojects/build-init/src/main/resources/org/gradle/buildinit/tasks/templates/library-versions.properties @@ -1,7 +1,7 @@ #Generated file, please do not edit - Version values used in build-init templates commons-math=3.6.1 commons-text=1.9 -groovy=3.0.8 +groovy=3.0.9 guava=30.1.1-jre junit-jupiter=5.7.2 junit=4.13.2 diff --git a/subprojects/docs/src/docs/userguide/compatibility.adoc b/subprojects/docs/src/docs/userguide/compatibility.adoc index 15bf822717cd..9c82a40fbaaa 100644 --- a/subprojects/docs/src/docs/userguide/compatibility.adoc +++ b/subprojects/docs/src/docs/userguide/compatibility.adoc @@ -45,7 +45,7 @@ For older Gradle versions, please see the table below which Java version is supp Gradle is tested with Kotlin 1.3.72 through 1.5.31. == Groovy -Gradle is tested with Groovy 1.5.8 through 3.0.8. +Gradle is tested with Groovy 1.5.8 through 3.0.9. == Android Gradle is tested with Android Gradle Plugin 4.1, 4.2, 7.0 and 7.1. Alpha and beta versions may or may not work. diff --git a/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc b/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc index 3291cabd09cb..6fd73afe700b 100644 --- a/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc +++ b/subprojects/docs/src/docs/userguide/migration/upgrading_version_7.adoc @@ -41,6 +41,7 @@ Some plugins will break with this new version of Gradle, for example because the ==== Updates to bundled Gradle dependencies - Kotlin has been updated to https://github.com/JetBrains/kotlin/releases/tag/v1.5.31[Kotlin 1.5.31]. +- Groovy has been updated to https://groovy-lang.org/changelogs/changelog-3.0.9.html[Groovy 3.0.9]. ==== Application order of plugins in the `plugins` block diff --git a/subprojects/docs/src/samples/groovy/library-publishing/groovy/my-library/build.gradle b/subprojects/docs/src/samples/groovy/library-publishing/groovy/my-library/build.gradle index f196efc7ccf8..c4eb1da447bc 100644 --- a/subprojects/docs/src/samples/groovy/library-publishing/groovy/my-library/build.gradle +++ b/subprojects/docs/src/samples/groovy/library-publishing/groovy/my-library/build.gradle @@ -11,7 +11,7 @@ repositories { } dependencies { - implementation 'org.codehaus.groovy:groovy-all:3.0.8' + implementation 'org.codehaus.groovy:groovy-all:3.0.9' } publishing { diff --git a/subprojects/docs/src/samples/groovy/library-publishing/kotlin/my-library/build.gradle.kts b/subprojects/docs/src/samples/groovy/library-publishing/kotlin/my-library/build.gradle.kts index 997e629ed77c..68f1e77ac786 100644 --- a/subprojects/docs/src/samples/groovy/library-publishing/kotlin/my-library/build.gradle.kts +++ b/subprojects/docs/src/samples/groovy/library-publishing/kotlin/my-library/build.gradle.kts @@ -11,7 +11,7 @@ repositories { } dependencies { - implementation("org.codehaus.groovy:groovy-all:3.0.8") + implementation("org.codehaus.groovy:groovy-all:3.0.9") } publishing { diff --git a/subprojects/ide/src/integTest/groovy/org/gradle/plugins/ide/AbstractSourcesAndJavadocJarsIntegrationTest.groovy b/subprojects/ide/src/integTest/groovy/org/gradle/plugins/ide/AbstractSourcesAndJavadocJarsIntegrationTest.groovy index 06527d56a0f4..7c5f89a9a607 100644 --- a/subprojects/ide/src/integTest/groovy/org/gradle/plugins/ide/AbstractSourcesAndJavadocJarsIntegrationTest.groovy +++ b/subprojects/ide/src/integTest/groovy/org/gradle/plugins/ide/AbstractSourcesAndJavadocJarsIntegrationTest.groovy @@ -30,7 +30,7 @@ abstract class AbstractSourcesAndJavadocJarsIntegrationTest extends AbstractIdeI @Rule HttpServer server - String groovyVersion = "3.0.8" + String groovyVersion = "3.0.9" def setup() { server.start() diff --git a/subprojects/plugins/src/test/groovy/org/gradle/api/tasks/GroovyRuntimeTest.groovy b/subprojects/plugins/src/test/groovy/org/gradle/api/tasks/GroovyRuntimeTest.groovy index cf9d6389cd9f..ecb2da901cc6 100644 --- a/subprojects/plugins/src/test/groovy/org/gradle/api/tasks/GroovyRuntimeTest.groovy +++ b/subprojects/plugins/src/test/groovy/org/gradle/api/tasks/GroovyRuntimeTest.groovy @@ -43,7 +43,7 @@ class GroovyRuntimeTest extends AbstractProjectBuilderSpec { } def "inferred Groovy3 class path uses 'groovy' jars from classpath if all required pieces are found"() { - def groovyVersion = "3.0.8" + def groovyVersion = "3.0.9" when: def classpath = project.groovyRuntime.inferGroovyClasspath([ diff --git a/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy b/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy index f8189f482789..b432ad9e90e3 100644 --- a/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy +++ b/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy @@ -20,7 +20,12 @@ import org.gradle.integtests.fixtures.JUnitXmlTestExecutionResult import org.gradle.integtests.fixtures.executer.GradleContextualExecuter import spock.lang.IgnoreIf -import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.* +import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.DUMMY_TASK_NAME +import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.PROMPT +import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.YES +import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.answerOutput +import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.buildScanPlugin +import static org.gradle.integtests.fixtures.BuildScanUserInputFixture.buildScanPluginApplication @IgnoreIf({ GradleContextualExecuter.embedded }) // These tests run builds that themselves run a build in a test worker with 'gradleTestKit()' dependency, which needs to pick up Gradle modules from a real distribution class GradleRunnerConsoleInputEndUserIntegrationTest extends BaseTestKitEndUserIntegrationTest { @@ -47,7 +52,7 @@ class GradleRunnerConsoleInputEndUserIntegrationTest extends BaseTestKitEndUserI file("src/test/groovy/Test.groovy") << functionalTest(true, true) then: - succeeds 'build' + succeeds 'dependencies', 'build' executedAndNotSkipped ':test' new JUnitXmlTestExecutionResult(projectDir).totalNumberOfTestClassesExecuted > 0 } From 569389f0492fb3b0f8f76aa411bfaf22cc1626cb Mon Sep 17 00:00:00 2001 From: Sterling Greene Date: Thu, 23 Sep 2021 20:02:35 -0400 Subject: [PATCH 3/6] Update verification metadata for Groovy release --- gradle/verification-keyring.keys | 47 ++++++++++++++++++++++++++++++++ gradle/verification-metadata.xml | 3 ++ 2 files changed, 50 insertions(+) diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys index 6620f087330c..bf8188ddbb75 100644 --- a/gradle/verification-keyring.keys +++ b/gradle/verification-keyring.keys @@ -14410,3 +14410,50 @@ COwRkbgKnHC7P+tBBz9ZcwgaaUDznWOa/Kc+PmH/EJEVkRb/VSwy7BKzJCRkgSUK +0dwSoh3NyBxizsAWePMOK157AXfExz+iRUK =ynq3 -----END PGP PUBLIC KEY BLOCK----- + +pub 431B8F80403A7DC1 +uid Roger Howell + +sub 8BA78B161991D5F7 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=jtS6 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index d21d4c8d70c7..1b53fcd6779e 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -153,6 +153,9 @@ + + + From 494b23c9d382ec1e15f9472cd2c1bbeb3721084f Mon Sep 17 00:00:00 2001 From: Sterling Greene Date: Thu, 23 Sep 2021 23:16:11 -0400 Subject: [PATCH 4/6] Fix compatibility with Groovy 3.0.9 --- .../model/NodeBackedModelMapSpec.groovy | 2 +- .../tasks/compile/AbstractCompileTest.groovy | 92 ------------------- .../api/tasks/scala/ScalaCompileTest.groovy | 60 +++++++++++- .../api/tasks/scala/ScalaDocSpec.groovy | 5 +- 4 files changed, 61 insertions(+), 98 deletions(-) delete mode 100644 subprojects/plugins/src/testFixtures/groovy/org/gradle/api/tasks/compile/AbstractCompileTest.groovy diff --git a/subprojects/model-core/src/test/groovy/org/gradle/model/NodeBackedModelMapSpec.groovy b/subprojects/model-core/src/test/groovy/org/gradle/model/NodeBackedModelMapSpec.groovy index dfecb1a6cf5e..df2622e2c358 100644 --- a/subprojects/model-core/src/test/groovy/org/gradle/model/NodeBackedModelMapSpec.groovy +++ b/subprojects/model-core/src/test/groovy/org/gradle/model/NodeBackedModelMapSpec.groovy @@ -39,7 +39,7 @@ import org.gradle.util.internal.ClosureBackedAction import static org.gradle.model.ModelTypeTesting.fullyQualifiedNameOf import static org.gradle.util.internal.TextUtil.normaliseLineSeparators -abstract class NodeBackedModelMapSpec extends ProjectRegistrySpec { +abstract class NodeBackedModelMapSpec extends ProjectRegistrySpec { abstract Class getItemClass() abstract Class getSpecialItemClass() ModelType getItemType() { ModelType.of(itemClass) } diff --git a/subprojects/plugins/src/testFixtures/groovy/org/gradle/api/tasks/compile/AbstractCompileTest.groovy b/subprojects/plugins/src/testFixtures/groovy/org/gradle/api/tasks/compile/AbstractCompileTest.groovy deleted file mode 100644 index 737688815460..000000000000 --- a/subprojects/plugins/src/testFixtures/groovy/org/gradle/api/tasks/compile/AbstractCompileTest.groovy +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2010 the original author or authors. - * - * 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. - */ - -package org.gradle.api.tasks.compile - -import org.gradle.api.internal.file.TestFiles -import org.gradle.api.tasks.AbstractConventionTaskTest -import org.gradle.util.internal.WrapUtil - -abstract class AbstractCompileTest extends AbstractConventionTaskTest { - public static final String TEST_PATTERN_1 = "pattern1" - public static final String TEST_PATTERN_2 = "pattern2" - public static final String TEST_PATTERN_3 = "pattern3" - - public static final List TEST_INCLUDES = WrapUtil.toList("incl/*") - public static final List TEST_EXCLUDES = WrapUtil.toList("excl/*") - - protected File srcDir - protected File destDir - protected File depCacheDir - - protected abstract AbstractCompile getCompile() - - def setup() { - destDir = project.file("destDir") - depCacheDir = project.file("depCache") - srcDir = project.file("src") - srcDir.mkdirs() - } - - def "default values"() { - given: - def compile = getCompile() - - expect: - compile.getDestinationDir() == null - compile.getDestinationDirectory().getOrNull() == null - compile.getSourceCompatibility() == null - compile.getTargetCompatibility() == null - compile.getSource().isEmpty() - } - - def "test includes"() { - given: - AbstractCompile compile = getCompile() - - expect: - compile.is(compile.include(TEST_PATTERN_1, TEST_PATTERN_2)) - compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) - - and: - compile.is(compile.include(TEST_PATTERN_3)) - compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) - } - - def "test excludes"() { - given: - AbstractCompile compile = getCompile() - - expect: - compile.is(compile.exclude(TEST_PATTERN_1, TEST_PATTERN_2)) - compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) - - and: - compile.is(compile.exclude(TEST_PATTERN_3)) - compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) - } - - protected void setUpMocksAndAttributes(final AbstractCompile compile) { - compile.source(srcDir) - compile.setIncludes(TEST_INCLUDES) - compile.setExcludes(TEST_EXCLUDES) - compile.setSourceCompatibility("1.5") - compile.setTargetCompatibility("1.5") - compile.setDestinationDir(destDir) - - compile.setClasspath(TestFiles.fixed(new File("jar1"))) - } -} diff --git a/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy b/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy index dc88c9778e4a..491482df1679 100644 --- a/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy +++ b/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy @@ -21,21 +21,70 @@ import org.gradle.api.internal.ConventionTask import org.gradle.api.internal.file.FileTreeInternal import org.gradle.api.internal.file.TestFiles import org.gradle.api.internal.tasks.scala.ScalaJavaJointCompileSpec +import org.gradle.api.tasks.AbstractConventionTaskTest import org.gradle.api.tasks.TaskExecutionException import org.gradle.api.tasks.WorkResults import org.gradle.api.tasks.compile.AbstractCompile -import org.gradle.api.tasks.compile.AbstractCompileTest import org.gradle.language.base.internal.compile.Compiler import org.gradle.language.scala.tasks.BaseScalaCompileOptions +import org.gradle.util.internal.WrapUtil + +class ScalaCompileTest extends AbstractConventionTaskTest { + public static final String TEST_PATTERN_1 = "pattern1" + public static final String TEST_PATTERN_2 = "pattern2" + public static final String TEST_PATTERN_3 = "pattern3" + + public static final List TEST_INCLUDES = WrapUtil.toList("incl/*") + public static final List TEST_EXCLUDES = WrapUtil.toList("excl/*") + + protected File srcDir + protected File destDir + protected File depCacheDir + + def "default values"() { + given: + def compile = getCompile() + + expect: + compile.getDestinationDir() == null + compile.getDestinationDirectory().getOrNull() == null + compile.getSourceCompatibility() == null + compile.getTargetCompatibility() == null + compile.getSource().isEmpty() + } + + def "test includes"() { + given: + AbstractCompile compile = getCompile() + + expect: + compile.is(compile.include(TEST_PATTERN_1, TEST_PATTERN_2)) + compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) + + and: + compile.is(compile.include(TEST_PATTERN_3)) + compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) + } + + def "test excludes"() { + given: + AbstractCompile compile = getCompile() + + expect: + compile.is(compile.exclude(TEST_PATTERN_1, TEST_PATTERN_2)) + compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) + + and: + compile.is(compile.exclude(TEST_PATTERN_3)) + compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) + } -class ScalaCompileTest extends AbstractCompileTest { private ScalaCompile scalaCompile private scalaCompiler = Mock(Compiler) private scalaClasspath = Mock(FileTreeInternal) private scalaCompilerPlugins = Mock(FileTreeInternal) - @Override AbstractCompile getCompile() { return scalaCompile } @@ -46,6 +95,11 @@ class ScalaCompileTest extends AbstractCompileTest { } def setup() { + destDir = project.file("destDir") + depCacheDir = project.file("depCache") + srcDir = project.file("src") + srcDir.mkdirs() + scalaCompile = createTask(ScalaCompile) scalaCompile.setCompiler(scalaCompiler) diff --git a/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaDocSpec.groovy b/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaDocSpec.groovy index 3146a2533b93..79519e9d241a 100644 --- a/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaDocSpec.groovy +++ b/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaDocSpec.groovy @@ -18,10 +18,11 @@ package org.gradle.api.tasks.scala import org.gradle.api.internal.file.TestFiles import org.gradle.api.internal.project.taskfactory.TaskInstantiator import org.gradle.api.tasks.AbstractConventionTaskTest - import org.gradle.util.internal.WrapUtil -import static org.gradle.api.tasks.compile.AbstractCompileTest.* +import static org.gradle.api.tasks.scala.ScalaCompileTest.TEST_PATTERN_1 +import static org.gradle.api.tasks.scala.ScalaCompileTest.TEST_PATTERN_2 +import static org.gradle.api.tasks.scala.ScalaCompileTest.TEST_PATTERN_3 class ScalaDocSpec extends AbstractConventionTaskTest { From bdf596c2206e0702cdd168c61afb8b6bfc4de7d4 Mon Sep 17 00:00:00 2001 From: Sterling Greene Date: Thu, 23 Sep 2021 23:30:10 -0400 Subject: [PATCH 5/6] Remove tests that try to execute ScalaCompile in a unit test --- .../api/tasks/scala/ScalaCompileTest.groovy | 119 ++++-------------- 1 file changed, 25 insertions(+), 94 deletions(-) diff --git a/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy b/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy index 491482df1679..3e8464be8458 100644 --- a/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy +++ b/subprojects/scala/src/test/groovy/org/gradle/api/tasks/scala/ScalaCompileTest.groovy @@ -16,17 +16,10 @@ package org.gradle.api.tasks.scala import org.apache.commons.io.FileUtils -import org.gradle.api.InvalidUserDataException import org.gradle.api.internal.ConventionTask -import org.gradle.api.internal.file.FileTreeInternal -import org.gradle.api.internal.file.TestFiles -import org.gradle.api.internal.tasks.scala.ScalaJavaJointCompileSpec import org.gradle.api.tasks.AbstractConventionTaskTest -import org.gradle.api.tasks.TaskExecutionException -import org.gradle.api.tasks.WorkResults import org.gradle.api.tasks.compile.AbstractCompile import org.gradle.language.base.internal.compile.Compiler -import org.gradle.language.scala.tasks.BaseScalaCompileOptions import org.gradle.util.internal.WrapUtil class ScalaCompileTest extends AbstractConventionTaskTest { @@ -34,56 +27,12 @@ class ScalaCompileTest extends AbstractConventionTaskTest { public static final String TEST_PATTERN_2 = "pattern2" public static final String TEST_PATTERN_3 = "pattern3" - public static final List TEST_INCLUDES = WrapUtil.toList("incl/*") - public static final List TEST_EXCLUDES = WrapUtil.toList("excl/*") - protected File srcDir protected File destDir protected File depCacheDir - def "default values"() { - given: - def compile = getCompile() - - expect: - compile.getDestinationDir() == null - compile.getDestinationDirectory().getOrNull() == null - compile.getSourceCompatibility() == null - compile.getTargetCompatibility() == null - compile.getSource().isEmpty() - } - - def "test includes"() { - given: - AbstractCompile compile = getCompile() - - expect: - compile.is(compile.include(TEST_PATTERN_1, TEST_PATTERN_2)) - compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) - - and: - compile.is(compile.include(TEST_PATTERN_3)) - compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) - } - - def "test excludes"() { - given: - AbstractCompile compile = getCompile() - - expect: - compile.is(compile.exclude(TEST_PATTERN_1, TEST_PATTERN_2)) - compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) - - and: - compile.is(compile.exclude(TEST_PATTERN_3)) - compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) - } - private ScalaCompile scalaCompile - private scalaCompiler = Mock(Compiler) - private scalaClasspath = Mock(FileTreeInternal) - private scalaCompilerPlugins = Mock(FileTreeInternal) AbstractCompile getCompile() { return scalaCompile @@ -107,59 +56,41 @@ class ScalaCompileTest extends AbstractConventionTaskTest { FileUtils.touch(new File(srcDir, "incl/file.java")) } - def "execute doing work"() { + def "default values"() { given: - setUpMocksAndAttributes(scalaCompile) - scalaClasspath.isEmpty() >> false - - when: - execute(scalaCompile) + def compile = getCompile() - then: - 1 * scalaCompiler.execute(_ as ScalaJavaJointCompileSpec) >> WorkResults.didWork(true) + expect: + compile.getDestinationDir() == null + compile.getDestinationDirectory().getOrNull() == null + compile.getSourceCompatibility() == null + compile.getTargetCompatibility() == null + compile.getSource().isEmpty() } - def "moans if scalaClasspath is empty"() { + def "test includes"() { given: - setUpMocksAndAttributes(scalaCompile) - scalaClasspath.isEmpty() >> true + AbstractCompile compile = getCompile() - when: - execute(scalaCompile) + expect: + compile.is(compile.include(TEST_PATTERN_1, TEST_PATTERN_2)) + compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) - then: - TaskExecutionException e = thrown() - e.cause instanceof InvalidUserDataException - e.cause.message.contains("'testTask.scalaClasspath' must not be empty") + and: + compile.is(compile.include(TEST_PATTERN_3)) + compile.getIncludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) } - def "sets annotation processor path"() { - ScalaJavaJointCompileSpec compileSpec = null - def file = new File('foo.jar') - + def "test excludes"() { given: - setUpMocksAndAttributes(scalaCompile) - scalaCompile.getOptions().setAnnotationProcessorPath(TestFiles.fixed(file)) - - when: - execute(scalaCompile) - - then: - 1 * scalaCompiler.execute(_ as ScalaJavaJointCompileSpec) >> { ScalaJavaJointCompileSpec compilerSpecArg -> - compileSpec = compilerSpecArg - return WorkResults.didWork(true) - } - compileSpec.getAnnotationProcessorPath() == [file] - } + AbstractCompile compile = getCompile() + + expect: + compile.is(compile.exclude(TEST_PATTERN_1, TEST_PATTERN_2)) + compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2) - protected void setUpMocksAndAttributes(final ScalaCompile compile) { - super.setUpMocksAndAttributes(compile) - compile.setScalaClasspath(scalaClasspath) - compile.setZincClasspath(compile.getClasspath()) - compile.setScalaCompilerPlugins(scalaCompilerPlugins) - scalaCompilerPlugins.iterator() >> Collections.emptyIterator() - BaseScalaCompileOptions options = compile.getScalaCompileOptions() - options.getIncrementalOptions().setAnalysisFile(new File("analysisFile")) - options.getIncrementalOptions().setClassfileBackupDir(new File("classfileBackupDir")) + and: + compile.is(compile.exclude(TEST_PATTERN_3)) + compile.getExcludes() == WrapUtil.toLinkedSet(TEST_PATTERN_1, TEST_PATTERN_2, TEST_PATTERN_3) } } From 3c472e3057dd1b7def699c21141fe7fb8e860ed5 Mon Sep 17 00:00:00 2001 From: Sterling Greene Date: Fri, 24 Sep 2021 00:14:23 -0400 Subject: [PATCH 6/6] Remove debugging code from test --- .../GradleRunnerConsoleInputEndUserIntegrationTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy b/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy index b432ad9e90e3..6da97c5257f0 100644 --- a/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy +++ b/subprojects/test-kit/src/integTest/groovy/org/gradle/testkit/runner/enduser/GradleRunnerConsoleInputEndUserIntegrationTest.groovy @@ -52,7 +52,7 @@ class GradleRunnerConsoleInputEndUserIntegrationTest extends BaseTestKitEndUserI file("src/test/groovy/Test.groovy") << functionalTest(true, true) then: - succeeds 'dependencies', 'build' + succeeds 'build' executedAndNotSkipped ':test' new JUnitXmlTestExecutionResult(projectDir).totalNumberOfTestClassesExecuted > 0 }