From a9ff4ed365510fa2147dc5b373727e59f8651899 Mon Sep 17 00:00:00 2001 From: Patrick Koenig Date: Tue, 9 Aug 2022 14:18:22 -0700 Subject: [PATCH 1/2] Don't apply JUnit reports plugin by default --- .../baseline/plugins/BaselineCircleCi.java | 22 ++++-- .../BaselineCircleCiJavaIntegrationTests.java | 79 ------------------- .../com.palantir.junit-reports.properties | 2 +- 3 files changed, 15 insertions(+), 88 deletions(-) diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCircleCi.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCircleCi.java index 9d500e39d..2c496732d 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCircleCi.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineCircleCi.java @@ -19,8 +19,6 @@ import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.palantir.gradle.junit.JunitReportsExtension; -import com.palantir.gradle.junit.JunitReportsPlugin; -import com.palantir.gradle.junit.JunitReportsRootPlugin; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -40,9 +38,6 @@ public final class BaselineCircleCi implements Plugin { @Override public void apply(Project project) { - project.getPluginManager().apply(JunitReportsRootPlugin.class); - project.getPluginManager().apply(JunitReportsPlugin.class); - configurePluginsForReports(project); configurePluginsForArtifacts(project); @@ -84,9 +79,20 @@ private void configurePluginsForReports(Project project) { throw new RuntimeException("failed to create CIRCLE_TEST_REPORTS directory", e); } - project.getExtensions().configure(JunitReportsExtension.class, junitReports -> junitReports - .getReportsDirectory() - .set(new File(circleReportsDir))); + project.getRootProject() + .allprojects(proj -> proj.getTasks().withType(Test.class).configureEach(test -> { + test.getReports().getJunitXml().getRequired().set(true); + test.getReports() + .getJunitXml() + .getOutputLocation() + .set(junitPath(circleReportsDir, test.getPath())); + })); + + project.getPluginManager().withPlugin("com.palantir.junit-reports", unused -> { + project.getExtensions().configure(JunitReportsExtension.class, junitReports -> junitReports + .getReportsDirectory() + .set(new File(circleReportsDir))); + }); } private static File junitPath(String basePath, String testPath) { 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 128b90433..db690f007 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 @@ -53,34 +53,6 @@ public void before() { copyTestFile("checkstyle.xml", projectDir, "config/checkstyle/checkstyle.xml"); } - @Test - public void javacIntegrationTest() throws IOException { - copyTestFile("non-compiling-class", projectDir, "src/main/java/com/example/MyClass.java"); - - BuildResult result = GradleRunner.create() - .withPluginClasspath() - .withProjectDir(projectDir.getRoot()) - .withArguments("--stacktrace", "compileJava") - .buildAndFail(); - assertThat(result.getOutput()) - .contains("Compilation failed") - .contains("error: incompatible types") - .contains("private final int a") - .contains("error: cannot assign a value to final variable b") - .contains("b = 2") - .contains("uses unchecked or unsafe operations"); - - File report = new File(reportsDir, "/foobar-compileJava.xml"); - assertThat(report).exists(); - String reportXml = Files.asCharSource(report, StandardCharsets.UTF_8).read(); - assertThat(reportXml) - .contains("incompatible types") - .contains("private final int a") - .contains("cannot assign a value to final variable b") - .contains("b = 2") - .doesNotContain("uses unchecked or unsafe operations"); - } - @Test public void junitIntegrationTest() throws IOException { copyTestFile("tested-class", projectDir, "src/main/java/com/example/MyClass.java"); @@ -123,57 +95,6 @@ public void junitSubprojectIntegrationTest() throws IOException { .contains("org.junit.ComparisonFailure"); } - @Test - public void checkstyleIntegrationTest() throws IOException { - copyTestFile("checkstyle-violating-class", projectDir, "src/main/java/com/example/MyClass.java"); - - BuildResult result = GradleRunner.create() - .withPluginClasspath() - .withProjectDir(projectDir.getRoot()) - .withArguments("--stacktrace", "checkstyleMain") - .buildAndFail(); - assertThat(result.getOutput()).contains("Checkstyle rule violations were found"); - - File report = new File(reportsDir, "foobar-checkstyleMain.xml"); - assertThat(report).exists(); - String reportXml = Files.asCharSource(report, StandardCharsets.UTF_8).read(); - assertThat(reportXml).contains("Name 'a_constant' must match pattern"); - } - - @Test - public void buildStepFailureIntegrationTest() throws IOException { - BuildResult result = GradleRunner.create() - .withPluginClasspath() - .withProjectDir(projectDir.getRoot()) - .withArguments("--stacktrace", "failingTask") - .buildAndFail(); - assertThat(result.getOutput()).contains("This task will always fail"); - - File report = new File(reportsDir, "gradle/build.xml"); - assertThat(report).exists(); - String reportXml = Files.asCharSource(report, StandardCharsets.UTF_8).read(); - assertThat(reportXml).contains("message=\"RuntimeException: This task will always fail\""); - } - - @Test - public void findsUniqueBuildStepsReportFileName() throws IOException { - assertThat(new File(reportsDir, "gradle").mkdirs()).isTrue(); - assertThat(new File(reportsDir, "gradle/build.xml").createNewFile()).isTrue(); - assertThat(new File(reportsDir, "gradle/build2.xml").createNewFile()).isTrue(); - - BuildResult result = GradleRunner.create() - .withPluginClasspath() - .withProjectDir(projectDir.getRoot()) - .withArguments("--stacktrace", "failingTask") - .buildAndFail(); - assertThat(result.getOutput()).contains("This task will always fail"); - - File report = new File(reportsDir, "gradle/build3.xml"); - assertThat(report).exists(); - String reportXml = Files.asCharSource(report, StandardCharsets.UTF_8).read(); - assertThat(reportXml).contains("message=\"RuntimeException: This task will always fail\""); - } - @Test public void canCallGradleThreeTimesInARow() { GradleRunner.create() 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..b94b2b360 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.gradle.junit.JunitReportsRootPlugin From ceb56080b0c66dd8ff04e24caf4495d2c5fa9abf Mon Sep 17 00:00:00 2001 From: svc-changelog Date: Tue, 9 Aug 2022 22:55:27 +0000 Subject: [PATCH 2/2] Add generated changelog entries --- changelog/@unreleased/pr-2355.v2.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/@unreleased/pr-2355.v2.yml diff --git a/changelog/@unreleased/pr-2355.v2.yml b/changelog/@unreleased/pr-2355.v2.yml new file mode 100644 index 000000000..853b17155 --- /dev/null +++ b/changelog/@unreleased/pr-2355.v2.yml @@ -0,0 +1,6 @@ +type: improvement +improvement: + description: The JUnits reports plugin is no longer applied by default. Test reports + now use the standard output locations from Gradle conventions. + links: + - https://github.com/palantir/gradle-baseline/pull/2355