From c526a218e14ab53abfadcb2a025b261bb398a63d Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 14:11:48 +0000 Subject: [PATCH 01/14] Start writing a test and fix deprecation warnings --- gradle-junit-reports/build.gradle | 1 + .../gradle/junit/JunitReportsFinalizer.java | 6 +++ .../com.palantir.junit-reports.properties | 2 +- .../junit/JunitReportsPluginSpec.groovy | 44 +++++++++++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy diff --git a/gradle-junit-reports/build.gradle b/gradle-junit-reports/build.gradle index 1dc319264..6fd3640b8 100644 --- a/gradle-junit-reports/build.gradle +++ b/gradle-junit-reports/build.gradle @@ -12,4 +12,5 @@ dependencies { testCompile 'junit:junit' testCompile 'org.assertj:assertj-core' testCompile 'org.mockito:mockito-core' + testImplementation 'com.netflix.nebula:nebula-test' } diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java index 65a3e0af2..cb67206d2 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java @@ -29,6 +29,7 @@ import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.provider.Provider; +import org.gradle.api.tasks.Input; import org.gradle.api.tasks.TaskAction; import org.w3c.dom.Document; @@ -66,6 +67,7 @@ public static void registerFinalizer( @Inject public JunitReportsFinalizer() { } + @Input public final Task getStyleTask() { return styleTask; } @@ -74,6 +76,7 @@ public final void setStyleTask(Task styleTask) { this.styleTask = styleTask; } + @Input public final TaskTimer getTaskTimer() { return taskTimer; } @@ -82,6 +85,7 @@ public final void setTaskTimer(TaskTimer taskTimer) { this.taskTimer = taskTimer; } + @Input public final FailuresSupplier getFailuresSupplier() { return failuresSupplier; } @@ -90,10 +94,12 @@ public final void setFailuresSupplier(FailuresSupplier failuresSupplier) { this.failuresSupplier = failuresSupplier; } + @Input public final RegularFileProperty getTargetFile() { return targetFile; } + @Input public final DirectoryProperty getReportDir() { return reportDir; } diff --git a/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties b/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties index dc83296dd..4bb115cdb 100644 --- a/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties +++ b/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties @@ -1 +1 @@ -implementation-class=com.palantir.baseline.plugins.BaselineCircleCi +implementation-class=com.palantir.gradle.junit.JunitReportsPlugin diff --git a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy b/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy new file mode 100644 index 000000000..52cca3aa7 --- /dev/null +++ b/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy @@ -0,0 +1,44 @@ +/* + * (c) Copyright 2020 Palantir Technologies Inc. All rights reserved. + * + * 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 com.palantir.gradle.junit + +import nebula.test.IntegrationSpec +import spock.lang.Unroll + +@Unroll +class JunitReportsPluginSpec extends IntegrationSpec { + private static final List GRADLE_TEST_VERSIONS = ['6.1'] + + def '#gradleVersionNumber: applies correctly'() { + setup: + gradleVersion = gradleVersionNumber + + when: + buildFile << ''' + apply plugin: 'java' + apply plugin: 'com.palantir.junit-reports' + ''' + + runTasksSuccessfully('-DignoreDeprecations', 'test') + + then: + true + + where: + gradleVersionNumber << GRADLE_TEST_VERSIONS + } +} From ea379d844a0027656fc135fe4e442f2b3d260e58 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 14:25:30 +0000 Subject: [PATCH 02/14] Finally get a test failure --- .../junit/JunitReportsPluginSpec.groovy | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy b/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy index 52cca3aa7..c0c1daf6a 100644 --- a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy +++ b/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy @@ -21,7 +21,7 @@ import spock.lang.Unroll @Unroll class JunitReportsPluginSpec extends IntegrationSpec { - private static final List GRADLE_TEST_VERSIONS = ['6.1'] + private static final List GRADLE_TEST_VERSIONS = ['5.6.4', '6.1'] def '#gradleVersionNumber: applies correctly'() { setup: @@ -30,10 +30,22 @@ class JunitReportsPluginSpec extends IntegrationSpec { when: buildFile << ''' apply plugin: 'java' + apply plugin: 'checkstyle' apply plugin: 'com.palantir.junit-reports' - ''' - - runTasksSuccessfully('-DignoreDeprecations', 'test') + + repositories { + jcenter() + } + '''.stripIndent() + + file('src/main/java/foo/FailsCheckstyle.java') << ''' + package foo; + public class FailsCheckstyle { + public void bad_method_name() {} + } + '''.stripIndent() + + println runTasksSuccessfully('checkstyleMain').standardOutput then: true From fec27a31a4b83b9b3d800a8b7069c835eaa90863 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 14:54:12 +0000 Subject: [PATCH 03/14] Jump throguh some hoops --- .../junit/JunitReportsPluginSpec.groovy | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy b/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy index c0c1daf6a..ead6ab55d 100644 --- a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy +++ b/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy @@ -17,13 +17,14 @@ package com.palantir.gradle.junit import nebula.test.IntegrationSpec +import nebula.test.functional.ExecutionResult import spock.lang.Unroll @Unroll class JunitReportsPluginSpec extends IntegrationSpec { private static final List GRADLE_TEST_VERSIONS = ['5.6.4', '6.1'] - def '#gradleVersionNumber: applies correctly'() { + def '#gradleVersionNumber: configures the checkstlye plugin correctly'() { setup: gradleVersion = gradleVersionNumber @@ -35,20 +36,22 @@ class JunitReportsPluginSpec extends IntegrationSpec { repositories { jcenter() - } + } '''.stripIndent() - file('src/main/java/foo/FailsCheckstyle.java') << ''' - package foo; - public class FailsCheckstyle { - public void bad_method_name() {} - } + file('src/main/java/foo/Foo.java') << ''' + package foo; + public class Foo {} '''.stripIndent() - println runTasksSuccessfully('checkstyleMain').standardOutput + ExecutionResult executionResult = runTasks('checkstyleMain') then: - true + // Running checkstyle inside nebula does not work as there are classpath problems that result in the `groovy-all` + // not being on Gradle's classpath. So the best we can do to verify that the checkstyle actually ran is to + // verify we get the classpath error that happens when the checkstyle class runs :( + // https://github.com/gradle/gradle/issues/3995 + executionResult.standardError.contains 'java.lang.ClassNotFoundException: groovy.util.AntBuilder' where: gradleVersionNumber << GRADLE_TEST_VERSIONS From 320ecbec58b227741b66392ddc7fe4266ee0979a Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 14:58:27 +0000 Subject: [PATCH 04/14] Fix problem and upgrade to 6.1 to get new code --- .../com/palantir/gradle/junit/CheckstyleReportHandler.java | 7 ++++++- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java index f8e76f522..97fd00050 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; import org.gradle.api.plugins.quality.Checkstyle; +import org.gradle.util.GradleVersion; import org.xml.sax.Attributes; public final class CheckstyleReportHandler extends ReportHandler { @@ -29,7 +30,11 @@ public final class CheckstyleReportHandler extends ReportHandler { @Override public void configureTask(Checkstyle task) { // Ensure XML output is enabled - task.getReports().findByName("xml").setEnabled(true); + if (GradleVersion.current().compareTo(GradleVersion.version("6.1")) >= 0) { + task.getReports().getXml().getRequired().convention(true); + } else { + task.getReports().findByName("xml").setEnabled(true); + } } @Override diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 94920145f..ba94df845 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 01ca418bb3df081160c27858b4d6dd599786ad95 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 15:25:27 +0000 Subject: [PATCH 05/14] Configure the task eagerly before the property is finalised, also downgrade gradle back --- .../palantir/gradle/junit/CheckstyleReportHandler.java | 8 +------- .../palantir/gradle/junit/XmlReportFailuresSupplier.java | 9 +-------- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 3 insertions(+), 16 deletions(-) diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java index 97fd00050..2de143982 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.List; import org.gradle.api.plugins.quality.Checkstyle; -import org.gradle.util.GradleVersion; import org.xml.sax.Attributes; public final class CheckstyleReportHandler extends ReportHandler { @@ -29,12 +28,7 @@ public final class CheckstyleReportHandler extends ReportHandler { @Override public void configureTask(Checkstyle task) { - // Ensure XML output is enabled - if (GradleVersion.current().compareTo(GradleVersion.version("6.1")) >= 0) { - task.getReports().getXml().getRequired().convention(true); - } else { - task.getReports().findByName("xml").setEnabled(true); - } + task.getReports().findByName("xml").setEnabled(true); } @Override diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index 57c2e6ed2..1387b794a 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -22,7 +22,6 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; -import org.gradle.api.Action; import org.gradle.api.Task; import org.gradle.api.reporting.ReportContainer; import org.gradle.api.reporting.Reporting; @@ -33,13 +32,7 @@ public final class XmlReportFailuresSupplier implements FailuresSupplier { public static >> XmlReportFailuresSupplier create(final T task, final ReportHandler reportHandler) { // Ensure any necessary output is enabled - task.doFirst(new Action() { - @Override - @SuppressWarnings("StrictUnusedVariable") - public void execute(Task ignored) { - reportHandler.configureTask(task); - } - }); + reportHandler.configureTask(task); return new XmlReportFailuresSupplier(task, reportHandler); } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ba94df845..94920145f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 529ce44159f18f18799068a4ee42f5e48bbe9ed1 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 16:16:50 +0000 Subject: [PATCH 06/14] Fix mistakenly changed files --- .../groovy/com/palantir/baseline}/JunitReportsPluginSpec.groovy | 2 +- .../java/com/palantir/gradle/junit/CheckstyleReportHandler.java | 1 + .../gradle-plugins/com.palantir.junit-reports.properties | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) rename {gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit => gradle-baseline-java/src/test/groovy/com/palantir/baseline}/JunitReportsPluginSpec.groovy (98%) diff --git a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy similarity index 98% rename from gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy rename to gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy index ead6ab55d..75fc53024 100644 --- a/gradle-junit-reports/src/test/groovy/com/palantir/gradle/junit/JunitReportsPluginSpec.groovy +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.palantir.gradle.junit +package com.palantir.baseline import nebula.test.IntegrationSpec import nebula.test.functional.ExecutionResult diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java index 2de143982..f8e76f522 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java @@ -28,6 +28,7 @@ public final class CheckstyleReportHandler extends ReportHandler { @Override public void configureTask(Checkstyle task) { + // Ensure XML output is enabled task.getReports().findByName("xml").setEnabled(true); } diff --git a/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties b/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties index 4bb115cdb..dc83296dd 100644 --- a/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties +++ b/gradle-junit-reports/src/main/resources/META-INF/gradle-plugins/com.palantir.junit-reports.properties @@ -1 +1 @@ -implementation-class=com.palantir.gradle.junit.JunitReportsPlugin +implementation-class=com.palantir.baseline.plugins.BaselineCircleCi From 272e3cee099c67091bd58217e9df2d6f04362e85 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Mon, 20 Jan 2020 16:16:50 +0000 Subject: [PATCH 07/14] Add generated changelog entries --- changelog/@unreleased/pr-1176.v2.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog/@unreleased/pr-1176.v2.yml diff --git a/changelog/@unreleased/pr-1176.v2.yml b/changelog/@unreleased/pr-1176.v2.yml new file mode 100644 index 000000000..491ed511f --- /dev/null +++ b/changelog/@unreleased/pr-1176.v2.yml @@ -0,0 +1,7 @@ +type: fix +fix: + description: Errors of the form `The value for Report xml property 'required' is + final and cannot be changed any further.` in Gradle 6.1 are now fixed for the + `com.palantir.junit-reports` plugin. + links: + - https://github.com/palantir/gradle-baseline/pull/1176 From 642a72badaf0b23af1a9617628ad070ac4d58810 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 12:08:02 +0000 Subject: [PATCH 08/14] Attempt to use testkit --- .../BaselineCircleCiJavaIntegrationTests.java | 31 +++++++---- .../baseline/JunitReportsPluginSpec.groovy | 51 +++++++++++++------ .../gradle/junit/CheckstyleReportHandler.java | 6 ++- .../junit/XmlReportFailuresSupplier.java | 24 ++++++--- 4 files changed, 79 insertions(+), 33 deletions(-) diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java index 63e74f8a0..160ce89e3 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java @@ -15,15 +15,8 @@ */ package com.palantir.baseline; -import static org.assertj.core.api.Assertions.assertThat; - import com.google.common.io.Files; import com.google.common.io.Resources; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.GradleRunner; import org.junit.Before; @@ -32,6 +25,14 @@ import org.junit.contrib.java.lang.system.EnvironmentVariables; import org.junit.rules.TemporaryFolder; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; + +import static org.assertj.core.api.Assertions.assertThat; + public class BaselineCircleCiJavaIntegrationTests { @Rule public final EnvironmentVariables env = new EnvironmentVariables(); @@ -121,16 +122,28 @@ public void junitSubprojectIntegrationTest() throws IOException { } @Test - public void checkstyleIntegrationTest() throws IOException { + public void checkstyleIntegrationTest_5_6_4() throws IOException { + checkstyleIntegrationTest("5.6.4"); + } + + @Test + public void checkstyleIntegrationTest_6_1() throws IOException { + checkstyleIntegrationTest("6.1"); + } + + private void checkstyleIntegrationTest(String gradleVersion) throws IOException { copyTestFile("checkstyle-violating-class", projectDir, "src/main/java/com/example/MyClass.java"); BuildResult result = GradleRunner.create() + .withGradleVersion(gradleVersion) .withPluginClasspath() .withProjectDir(projectDir.getRoot()) - .withArguments("--stacktrace", "checkstyleMain") + .withArguments("--stacktrace", "--info", "checkstyleMain") .buildAndFail(); assertThat(result.getOutput()).contains("Checkstyle rule violations were found"); + System.out.println("result.getOutput() = " + result.getOutput()); + File report = new File(reportsDir, "checkstyle/foobar-checkstyleMain.xml"); assertThat(report).exists(); String reportXml = Files.asCharSource(report, StandardCharsets.UTF_8).read(); diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy index 75fc53024..f562bf9c0 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy @@ -16,44 +16,63 @@ package com.palantir.baseline -import nebula.test.IntegrationSpec -import nebula.test.functional.ExecutionResult + +import org.gradle.testkit.runner.GradleRunner +import org.gradle.testkit.runner.TaskOutcome +import org.junit.Rule +import org.junit.rules.TemporaryFolder +import spock.lang.Specification import spock.lang.Unroll @Unroll -class JunitReportsPluginSpec extends IntegrationSpec { +class JunitReportsPluginSpec extends Specification { private static final List GRADLE_TEST_VERSIONS = ['5.6.4', '6.1'] - def '#gradleVersionNumber: configures the checkstlye plugin correctly'() { - setup: - gradleVersion = gradleVersionNumber + @Rule final TemporaryFolder testProjectDir = new TemporaryFolder() + File settingsFile + File buildFile - when: + def setup() { + settingsFile = testProjectDir.newFile('settings.gradle') + buildFile = testProjectDir.newFile('build.gradle') + } + + def '#gradleVersion: configures the checkstlye plugin correctly'() { + given: buildFile << ''' + plugins { + id 'com.palantir.baseline-circleci' + } + apply plugin: 'java' apply plugin: 'checkstyle' - apply plugin: 'com.palantir.junit-reports' + // apply plugin: 'com.palantir.baseline-circleci' repositories { jcenter() } '''.stripIndent() - file('src/main/java/foo/Foo.java') << ''' + def javaCode = new File(testProjectDir.getRoot(), 'src/main/java/foo/Foo.java') + javaCode.getParentFile().mkdirs() + javaCode << ''' package foo; public class Foo {} '''.stripIndent() - ExecutionResult executionResult = runTasks('checkstyleMain') + when: + def result = GradleRunner.create() + .withPluginClasspath() + .withGradleVersion(gradleVersion) + .withProjectDir(testProjectDir.root) + .withArguments('-s', 'checkstyleMain') + .withDebug(false) + .build() then: - // Running checkstyle inside nebula does not work as there are classpath problems that result in the `groovy-all` - // not being on Gradle's classpath. So the best we can do to verify that the checkstyle actually ran is to - // verify we get the classpath error that happens when the checkstyle class runs :( - // https://github.com/gradle/gradle/issues/3995 - executionResult.standardError.contains 'java.lang.ClassNotFoundException: groovy.util.AntBuilder' + result.task('checkstyleMain').outcome == TaskOutcome.SUCCESS where: - gradleVersionNumber << GRADLE_TEST_VERSIONS + gradleVersion << GRADLE_TEST_VERSIONS } } diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java index f8e76f522..1b0f2c330 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java @@ -15,11 +15,12 @@ */ package com.palantir.gradle.junit; +import org.gradle.api.plugins.quality.Checkstyle; +import org.xml.sax.Attributes; + import java.io.File; import java.util.ArrayList; import java.util.List; -import org.gradle.api.plugins.quality.Checkstyle; -import org.xml.sax.Attributes; public final class CheckstyleReportHandler extends ReportHandler { @@ -29,6 +30,7 @@ public final class CheckstyleReportHandler extends ReportHandler { @Override public void configureTask(Checkstyle task) { // Ensure XML output is enabled + task.getReports().findByName("xml").setEnabled(true); } diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index 1387b794a..c645a3979 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -15,6 +15,14 @@ */ package com.palantir.gradle.junit; +import org.gradle.api.Action; +import org.gradle.api.Task; +import org.gradle.api.logging.Logging; +import org.gradle.api.reporting.ReportContainer; +import org.gradle.api.reporting.Reporting; +import org.gradle.api.reporting.SingleFileReport; +import org.gradle.util.GradleVersion; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -22,17 +30,21 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; -import org.gradle.api.Task; -import org.gradle.api.reporting.ReportContainer; -import org.gradle.api.reporting.Reporting; -import org.gradle.api.reporting.SingleFileReport; public final class XmlReportFailuresSupplier implements FailuresSupplier { public static >> XmlReportFailuresSupplier create(final T task, final ReportHandler reportHandler) { - // Ensure any necessary output is enabled - reportHandler.configureTask(task); + // Ensure any necessary output is enabled + Logging.getLogger(XmlReportFailuresSupplier.class).warn("Gradle Version: {}", GradleVersion.current()); + + task.doFirst(new Action() { + @Override + @SuppressWarnings("StrictUnusedVariable") + public void execute(Task ignored) { + reportHandler.configureTask(task); + } + }); return new XmlReportFailuresSupplier(task, reportHandler); } From 1c3e659666cbee262c55f5c41ccd9fe14a85015b Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 12:08:06 +0000 Subject: [PATCH 09/14] Revert "Attempt to use testkit" This reverts commit 642a72badaf0b23af1a9617628ad070ac4d58810. --- .../BaselineCircleCiJavaIntegrationTests.java | 31 ++++------- .../baseline/JunitReportsPluginSpec.groovy | 51 ++++++------------- .../gradle/junit/CheckstyleReportHandler.java | 6 +-- .../junit/XmlReportFailuresSupplier.java | 24 +++------ 4 files changed, 33 insertions(+), 79 deletions(-) diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java index 160ce89e3..63e74f8a0 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineCircleCiJavaIntegrationTests.java @@ -15,8 +15,15 @@ */ package com.palantir.baseline; +import static org.assertj.core.api.Assertions.assertThat; + import com.google.common.io.Files; import com.google.common.io.Resources; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.GradleRunner; import org.junit.Before; @@ -25,14 +32,6 @@ import org.junit.contrib.java.lang.system.EnvironmentVariables; import org.junit.rules.TemporaryFolder; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; - -import static org.assertj.core.api.Assertions.assertThat; - public class BaselineCircleCiJavaIntegrationTests { @Rule public final EnvironmentVariables env = new EnvironmentVariables(); @@ -122,28 +121,16 @@ public void junitSubprojectIntegrationTest() throws IOException { } @Test - public void checkstyleIntegrationTest_5_6_4() throws IOException { - checkstyleIntegrationTest("5.6.4"); - } - - @Test - public void checkstyleIntegrationTest_6_1() throws IOException { - checkstyleIntegrationTest("6.1"); - } - - private void checkstyleIntegrationTest(String gradleVersion) throws IOException { + public void checkstyleIntegrationTest() throws IOException { copyTestFile("checkstyle-violating-class", projectDir, "src/main/java/com/example/MyClass.java"); BuildResult result = GradleRunner.create() - .withGradleVersion(gradleVersion) .withPluginClasspath() .withProjectDir(projectDir.getRoot()) - .withArguments("--stacktrace", "--info", "checkstyleMain") + .withArguments("--stacktrace", "checkstyleMain") .buildAndFail(); assertThat(result.getOutput()).contains("Checkstyle rule violations were found"); - System.out.println("result.getOutput() = " + result.getOutput()); - File report = new File(reportsDir, "checkstyle/foobar-checkstyleMain.xml"); assertThat(report).exists(); String reportXml = Files.asCharSource(report, StandardCharsets.UTF_8).read(); diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy index f562bf9c0..75fc53024 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/JunitReportsPluginSpec.groovy @@ -16,63 +16,44 @@ package com.palantir.baseline - -import org.gradle.testkit.runner.GradleRunner -import org.gradle.testkit.runner.TaskOutcome -import org.junit.Rule -import org.junit.rules.TemporaryFolder -import spock.lang.Specification +import nebula.test.IntegrationSpec +import nebula.test.functional.ExecutionResult import spock.lang.Unroll @Unroll -class JunitReportsPluginSpec extends Specification { +class JunitReportsPluginSpec extends IntegrationSpec { private static final List GRADLE_TEST_VERSIONS = ['5.6.4', '6.1'] - @Rule final TemporaryFolder testProjectDir = new TemporaryFolder() - File settingsFile - File buildFile - - def setup() { - settingsFile = testProjectDir.newFile('settings.gradle') - buildFile = testProjectDir.newFile('build.gradle') - } + def '#gradleVersionNumber: configures the checkstlye plugin correctly'() { + setup: + gradleVersion = gradleVersionNumber - def '#gradleVersion: configures the checkstlye plugin correctly'() { - given: + when: buildFile << ''' - plugins { - id 'com.palantir.baseline-circleci' - } - apply plugin: 'java' apply plugin: 'checkstyle' - // apply plugin: 'com.palantir.baseline-circleci' + apply plugin: 'com.palantir.junit-reports' repositories { jcenter() } '''.stripIndent() - def javaCode = new File(testProjectDir.getRoot(), 'src/main/java/foo/Foo.java') - javaCode.getParentFile().mkdirs() - javaCode << ''' + file('src/main/java/foo/Foo.java') << ''' package foo; public class Foo {} '''.stripIndent() - when: - def result = GradleRunner.create() - .withPluginClasspath() - .withGradleVersion(gradleVersion) - .withProjectDir(testProjectDir.root) - .withArguments('-s', 'checkstyleMain') - .withDebug(false) - .build() + ExecutionResult executionResult = runTasks('checkstyleMain') then: - result.task('checkstyleMain').outcome == TaskOutcome.SUCCESS + // Running checkstyle inside nebula does not work as there are classpath problems that result in the `groovy-all` + // not being on Gradle's classpath. So the best we can do to verify that the checkstyle actually ran is to + // verify we get the classpath error that happens when the checkstyle class runs :( + // https://github.com/gradle/gradle/issues/3995 + executionResult.standardError.contains 'java.lang.ClassNotFoundException: groovy.util.AntBuilder' where: - gradleVersion << GRADLE_TEST_VERSIONS + gradleVersionNumber << GRADLE_TEST_VERSIONS } } diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java index 1b0f2c330..f8e76f522 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/CheckstyleReportHandler.java @@ -15,12 +15,11 @@ */ package com.palantir.gradle.junit; -import org.gradle.api.plugins.quality.Checkstyle; -import org.xml.sax.Attributes; - import java.io.File; import java.util.ArrayList; import java.util.List; +import org.gradle.api.plugins.quality.Checkstyle; +import org.xml.sax.Attributes; public final class CheckstyleReportHandler extends ReportHandler { @@ -30,7 +29,6 @@ public final class CheckstyleReportHandler extends ReportHandler { @Override public void configureTask(Checkstyle task) { // Ensure XML output is enabled - task.getReports().findByName("xml").setEnabled(true); } diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index c645a3979..1387b794a 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -15,14 +15,6 @@ */ package com.palantir.gradle.junit; -import org.gradle.api.Action; -import org.gradle.api.Task; -import org.gradle.api.logging.Logging; -import org.gradle.api.reporting.ReportContainer; -import org.gradle.api.reporting.Reporting; -import org.gradle.api.reporting.SingleFileReport; -import org.gradle.util.GradleVersion; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -30,21 +22,17 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; +import org.gradle.api.Task; +import org.gradle.api.reporting.ReportContainer; +import org.gradle.api.reporting.Reporting; +import org.gradle.api.reporting.SingleFileReport; public final class XmlReportFailuresSupplier implements FailuresSupplier { public static >> XmlReportFailuresSupplier create(final T task, final ReportHandler reportHandler) { - // Ensure any necessary output is enabled - Logging.getLogger(XmlReportFailuresSupplier.class).warn("Gradle Version: {}", GradleVersion.current()); - - task.doFirst(new Action() { - @Override - @SuppressWarnings("StrictUnusedVariable") - public void execute(Task ignored) { - reportHandler.configureTask(task); - } - }); + // Ensure any necessary output is enabled + reportHandler.configureTask(task); return new XmlReportFailuresSupplier(task, reportHandler); } From c72f068d25281ed0469b1c9d843f7927c674098c Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 12:20:47 +0000 Subject: [PATCH 10/14] Use afterEvaluate to really make sure it works --- .../junit/XmlReportFailuresSupplier.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index 1387b794a..1ce56e775 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -15,6 +15,13 @@ */ package com.palantir.gradle.junit; +import org.gradle.api.Action; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.reporting.ReportContainer; +import org.gradle.api.reporting.Reporting; +import org.gradle.api.reporting.SingleFileReport; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -22,17 +29,19 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; -import org.gradle.api.Task; -import org.gradle.api.reporting.ReportContainer; -import org.gradle.api.reporting.Reporting; -import org.gradle.api.reporting.SingleFileReport; public final class XmlReportFailuresSupplier implements FailuresSupplier { public static >> XmlReportFailuresSupplier create(final T task, final ReportHandler reportHandler) { - // Ensure any necessary output is enabled - reportHandler.configureTask(task); + // Ensure any necessary output is enabled + task.getProject().afterEvaluate(new Action() { + @Override + public void execute(Project _project) { + reportHandler.configureTask(task); + } + }); + return new XmlReportFailuresSupplier(task, reportHandler); } From 4d362d93c3bb97095c5ed1ed3032f708b2f3b80a Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 12:29:52 +0000 Subject: [PATCH 11/14] Fix imports --- .../gradle/junit/XmlReportFailuresSupplier.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index 1ce56e775..f70b284c2 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -15,13 +15,6 @@ */ package com.palantir.gradle.junit; -import org.gradle.api.Action; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.reporting.ReportContainer; -import org.gradle.api.reporting.Reporting; -import org.gradle.api.reporting.SingleFileReport; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -29,6 +22,12 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; +import org.gradle.api.Action; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.reporting.ReportContainer; +import org.gradle.api.reporting.Reporting; +import org.gradle.api.reporting.SingleFileReport; public final class XmlReportFailuresSupplier implements FailuresSupplier { From bbbe9edcf9736095caa00726e0868f7b83b7b935 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 12:32:55 +0000 Subject: [PATCH 12/14] Format files before merge --- .../gradle/junit/JunitReportsFinalizer.java | 32 ++++++++----------- .../junit/XmlReportFailuresSupplier.java | 22 +++++++------ 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java index cb67206d2..e32d655c5 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java @@ -15,14 +15,6 @@ */ package com.palantir.gradle.junit; -import java.io.File; -import java.io.IOException; -import java.io.Writer; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.List; -import javax.inject.Inject; -import javax.xml.transform.TransformerException; import org.gradle.api.DefaultTask; import org.gradle.api.Task; import org.gradle.api.file.Directory; @@ -33,17 +25,21 @@ import org.gradle.api.tasks.TaskAction; import org.w3c.dom.Document; +import javax.inject.Inject; +import javax.xml.transform.TransformerException; +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.List; + public class JunitReportsFinalizer extends DefaultTask { public static void registerFinalizer( - Task task, - TaskTimer timer, - FailuresSupplier failuresSupplier, - Provider reportDir) { + Task task, TaskTimer timer, FailuresSupplier failuresSupplier, Provider reportDir) { JunitReportsFinalizer finalizer = Tasks.createTask( - task.getProject().getTasks(), - task.getName() + "CircleFinalizer", - JunitReportsFinalizer.class); + task.getProject().getTasks(), task.getName() + "CircleFinalizer", JunitReportsFinalizer.class); if (finalizer == null) { // Already registered (happens if the user applies us to the root project and subprojects) return; @@ -51,8 +47,8 @@ public static void registerFinalizer( finalizer.setStyleTask(task); finalizer.setTaskTimer(timer); finalizer.setFailuresSupplier(failuresSupplier); - finalizer.getTargetFile().set(reportDir - .map(dir -> dir.file(task.getProject().getName() + "-" + task.getName() + ".xml"))); + finalizer.getTargetFile().set(reportDir.map(dir -> + dir.file(task.getProject().getName() + "-" + task.getName() + ".xml"))); finalizer.getReportDir().set(reportDir); task.finalizedBy(finalizer); @@ -65,7 +61,7 @@ public static void registerFinalizer( private final DirectoryProperty reportDir = getProject().getObjects().directoryProperty(); @Inject - public JunitReportsFinalizer() { } + public JunitReportsFinalizer() {} @Input public final Task getStyleTask() { diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index f70b284c2..e1506d7eb 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -15,6 +15,13 @@ */ package com.palantir.gradle.junit; +import org.gradle.api.Action; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.reporting.ReportContainer; +import org.gradle.api.reporting.Reporting; +import org.gradle.api.reporting.SingleFileReport; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -22,12 +29,6 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; -import org.gradle.api.Action; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.reporting.ReportContainer; -import org.gradle.api.reporting.Reporting; -import org.gradle.api.reporting.SingleFileReport; public final class XmlReportFailuresSupplier implements FailuresSupplier { @@ -48,8 +49,7 @@ public void execute(Project _project) { private final ReportHandler reportHandler; private XmlReportFailuresSupplier( - Reporting> reporting, - ReportHandler reportHandler) { + Reporting> reporting, ReportHandler reportHandler) { this.reporting = reporting; this.reportHandler = reportHandler; } @@ -58,7 +58,8 @@ private XmlReportFailuresSupplier( public List getFailures() throws IOException { File sourceReport = reporting.getReports().findByName("xml").getDestination(); try { - return XmlUtils.parseXml(reportHandler, new FileInputStream(sourceReport)).failures(); + return XmlUtils.parseXml(reportHandler, new FileInputStream(sourceReport)) + .failures(); } catch (IOException | RuntimeException e) { throw new RuntimeException(String.format("Failed to parse failures XML: %s", sourceReport), e); } @@ -74,7 +75,8 @@ public RuntimeException handleInternalFailure(Path reportDir, RuntimeException e } for (SingleFileReport rawReport : reporting.getReports()) { if (rawReport.isEnabled()) { - rawReport.getDestination() + rawReport + .getDestination() .renameTo(rawReportsDir.resolve(rawReport.getDestination().getName()).toFile()); } } From b7a016393d35c4a4340eaaebe0375e38c8b35c40 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 12:37:12 +0000 Subject: [PATCH 13/14] Fix format --- .../gradle/junit/JunitReportsFinalizer.java | 17 +++++++-------- .../junit/XmlReportFailuresSupplier.java | 21 +++++++++++-------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java index 4110aac59..0fec27fb5 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/JunitReportsFinalizer.java @@ -15,6 +15,14 @@ */ package com.palantir.gradle.junit; +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.List; +import javax.inject.Inject; +import javax.xml.transform.TransformerException; import org.gradle.api.DefaultTask; import org.gradle.api.Task; import org.gradle.api.file.Directory; @@ -25,15 +33,6 @@ import org.gradle.api.tasks.TaskAction; import org.w3c.dom.Document; -import javax.inject.Inject; -import javax.xml.transform.TransformerException; -import java.io.File; -import java.io.IOException; -import java.io.Writer; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.List; - public class JunitReportsFinalizer extends DefaultTask { public static void registerFinalizer( diff --git a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java index e1506d7eb..61f6cd035 100644 --- a/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java +++ b/gradle-junit-reports/src/main/java/com/palantir/gradle/junit/XmlReportFailuresSupplier.java @@ -15,13 +15,6 @@ */ package com.palantir.gradle.junit; -import org.gradle.api.Action; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.reporting.ReportContainer; -import org.gradle.api.reporting.Reporting; -import org.gradle.api.reporting.SingleFileReport; - import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -29,6 +22,12 @@ import java.nio.file.Path; import java.util.List; import java.util.UUID; +import org.gradle.api.Action; +import org.gradle.api.Project; +import org.gradle.api.Task; +import org.gradle.api.reporting.ReportContainer; +import org.gradle.api.reporting.Reporting; +import org.gradle.api.reporting.SingleFileReport; public final class XmlReportFailuresSupplier implements FailuresSupplier { @@ -77,10 +76,14 @@ public RuntimeException handleInternalFailure(Path reportDir, RuntimeException e if (rawReport.isEnabled()) { rawReport .getDestination() - .renameTo(rawReportsDir.resolve(rawReport.getDestination().getName()).toFile()); + .renameTo(rawReportsDir + .resolve(rawReport.getDestination().getName()) + .toFile()); } } return new RuntimeException( - "Finalizer failed; raw report files can be found at " + rawReportsDir.getFileName().toString(), ex); + "Finalizer failed; raw report files can be found at " + + rawReportsDir.getFileName().toString(), + ex); } } From 0961d5443e13b5526ac858ebd1a6e6f77a2dc7b7 Mon Sep 17 00:00:00 2001 From: Callum Rogers Date: Thu, 23 Jan 2020 14:04:41 +0000 Subject: [PATCH 14/14] Remove deprecation --- .../com/palantir/baseline/plugins/BaselineCheckstyle.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCheckstyle.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCheckstyle.java index de46bd79d..994e63b44 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCheckstyle.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCheckstyle.java @@ -54,8 +54,8 @@ public void apply(Project project) { project.getExtensions() .getByType(CheckstyleExtension.class) - .setConfigDir(this.project.file( - Paths.get(getConfigDir(), "checkstyle").toString())); + .getConfigDirectory() + .set(this.project.file(Paths.get(getConfigDir(), "checkstyle").toString())); project.getPluginManager().withPlugin("eclipse", plugin -> { EclipseProject eclipseProject = project.getExtensions().getByType(EclipseModel.class).getProject();