From f5e6ca6f37d43a73062fb433a0dbaf3b7bd462fc Mon Sep 17 00:00:00 2001 From: forozco Date: Mon, 14 Dec 2020 15:20:01 -0500 Subject: [PATCH 1/4] checkExplicitSourceCompatabilityTask ignores projects without java source --- .../tasks/CheckExplicitSourceCompatibilityTask.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java index a43424c0c..05334bf27 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java @@ -31,6 +31,7 @@ import org.gradle.api.provider.Property; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.specs.Spec; +import org.gradle.api.tasks.SourceSetContainer; import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.options.Option; import org.gradle.util.GradleVersion; @@ -74,6 +75,13 @@ public boolean isSatisfiedBy(Task element) { return !publishing.getPublications().isEmpty(); } }); + onlyIf(new Spec() { + @Override + public boolean isSatisfiedBy(Task task) { + return getProject().getExtensions().getByType(SourceSetContainer.class).stream() + .anyMatch(sourceSet -> !sourceSet.getAllJava().isEmpty()); + } + }); } @Option(option = "fix", description = "Whether to apply the suggested fix to build.gradle") From 5aa8cb3ffebcd3b8972af35a096e2fc199d66842 Mon Sep 17 00:00:00 2001 From: forozco Date: Mon, 14 Dec 2020 20:20:01 +0000 Subject: [PATCH 2/4] Add generated changelog entries --- changelog/@unreleased/pr-1584.v2.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/@unreleased/pr-1584.v2.yml diff --git a/changelog/@unreleased/pr-1584.v2.yml b/changelog/@unreleased/pr-1584.v2.yml new file mode 100644 index 000000000..76ef9fca9 --- /dev/null +++ b/changelog/@unreleased/pr-1584.v2.yml @@ -0,0 +1,6 @@ +type: improvement +improvement: + description: checkExplicitSourceCompatabilityTask ignores projects without java + source + links: + - https://github.com/palantir/gradle-baseline/pull/1584 From c8fe36d21e49e3f9f8d085d2de240107edba8e8a Mon Sep 17 00:00:00 2001 From: forozco Date: Mon, 14 Dec 2020 15:44:26 -0500 Subject: [PATCH 3/4] test --- .../CheckExplicitSourceCompatibilityTask.java | 6 +++-- ...elineReproducibilityIntegrationSpec.groovy | 24 ++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java index 05334bf27..b7939f690 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java @@ -78,8 +78,10 @@ public boolean isSatisfiedBy(Task element) { onlyIf(new Spec() { @Override public boolean isSatisfiedBy(Task task) { - return getProject().getExtensions().getByType(SourceSetContainer.class).stream() - .anyMatch(sourceSet -> !sourceSet.getAllJava().isEmpty()); + SourceSetContainer sourceSets = getProject().getExtensions().getByType(SourceSetContainer.class); + return sourceSets.stream() + .anyMatch( + sourceSet -> !sourceSet.getAllJava().getFiles().isEmpty()); } }); } diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/plugins/BaselineReproducibilityIntegrationSpec.groovy b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/plugins/BaselineReproducibilityIntegrationSpec.groovy index a7599798c..3988bc896 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/plugins/BaselineReproducibilityIntegrationSpec.groovy +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/plugins/BaselineReproducibilityIntegrationSpec.groovy @@ -69,7 +69,7 @@ class BaselineReproducibilityIntegrationSpec extends IntegrationSpec { writeHelloWorld() then: - runTasksSuccessfully("checkExplicitSourceCompatibility") + def result = runTasksSuccessfully("checkExplicitSourceCompatibility") } def 'no-op if nothing is published'() { @@ -87,4 +87,26 @@ class BaselineReproducibilityIntegrationSpec extends IntegrationSpec { def output = runTasksSuccessfully("check") output.getStandardOutput().contains("> Task :checkExplicitSourceCompatibility SKIPPED") } + + def 'no-op if there is not source'() { + when: + buildFile << """ + ${applyPlugin(BaselineReproducibility.class)} + apply plugin: 'java' + apply plugin: 'maven-publish' + version '1.2.3' + + publishing { + publications { + maven(MavenPublication) { + from components.java + } + } + } + """.stripIndent() + + then: + def output = runTasksSuccessfully("check") + output.getStandardOutput().contains("> Task :checkExplicitSourceCompatibility SKIPPED") + } } From abb5d7f51d71fcdc252834664bd24864636bac62 Mon Sep 17 00:00:00 2001 From: forozco Date: Mon, 14 Dec 2020 15:44:42 -0500 Subject: [PATCH 4/4] inline --- .../baseline/tasks/CheckExplicitSourceCompatibilityTask.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java index b7939f690..fa2d110a5 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/tasks/CheckExplicitSourceCompatibilityTask.java @@ -78,8 +78,7 @@ public boolean isSatisfiedBy(Task element) { onlyIf(new Spec() { @Override public boolean isSatisfiedBy(Task task) { - SourceSetContainer sourceSets = getProject().getExtensions().getByType(SourceSetContainer.class); - return sourceSets.stream() + return getProject().getExtensions().getByType(SourceSetContainer.class).stream() .anyMatch( sourceSet -> !sourceSet.getAllJava().getFiles().isEmpty()); }