From 93c0b30dc6fc225710d88d8914545c84bb564e24 Mon Sep 17 00:00:00 2001 From: Michael Osipov Date: Thu, 16 Nov 2023 21:39:41 +0100 Subject: [PATCH] Dynamically calculate xrefTestLocation @kriegaex --- .../report/AbstractSurefireReport.java | 40 ++++++++++++------- .../surefire/report/SurefireReportTest.java | 4 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- .../plugin-config.xml | 2 +- 12 files changed, 37 insertions(+), 27 deletions(-) diff --git a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/AbstractSurefireReport.java b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/AbstractSurefireReport.java index a12949af65..1948062206 100644 --- a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/AbstractSurefireReport.java +++ b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/AbstractSurefireReport.java @@ -25,6 +25,7 @@ import java.net.URLClassLoader; import java.text.MessageFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Locale; @@ -32,6 +33,7 @@ import java.util.ResourceBundle; import org.apache.maven.model.ReportPlugin; +import org.apache.maven.model.Reporting; import org.apache.maven.plugin.surefire.log.api.ConsoleLogger; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; @@ -78,16 +80,18 @@ public abstract class AbstractSurefireReport extends AbstractMavenReport { private File reportsDirectory; /** - * Location of the Xrefs to link. + * Link the violation line numbers to the (Test) Source XRef. Links will be created automatically if the JXR plugin is + * being used. */ - @Parameter(defaultValue = "${project.reporting.outputDirectory}/xref-test") - private File xrefLocation; + @Parameter(property = "linkXRef", defaultValue = "true") + private boolean linkXRef; /** - * Whether to link the XRef if found. + * Location where Test Source XRef is generated for this project. The default value is calculated from + * {@link #getReportOutputDirectory()} and concatenated with {@code xref-test}. */ - @Parameter(defaultValue = "true", property = "linkXRef") - private boolean linkXRef; + @Parameter + private File xrefTestLocation; /** * Whether to build an aggregated report at the root, or build individual reports. @@ -150,7 +154,7 @@ public void executeReport(Locale locale) throws MavenReportException { locale, getConsoleLogger(), getReportsDirectories(), - determineXrefLocation(), + constructXrefTestLocation(), showSuccess); r.render(); } @@ -252,12 +256,13 @@ private List getProjectsWithoutRoot() { return result; } - private String determineXrefLocation() { + private String constructXrefTestLocation() { String location = null; - if (linkXRef) { - String relativePath = PathTool.getRelativePath( - getReportOutputDirectory().getAbsolutePath(), xrefLocation.getAbsolutePath()); + File xrefLocation = getXrefTestLocation(); + + String relativePath = + PathTool.getRelativePath(getReportOutputDirectory().getAbsolutePath(), xrefLocation.getAbsolutePath()); if (relativePath == null || relativePath.isEmpty()) { relativePath = "."; } @@ -267,10 +272,11 @@ private String determineXrefLocation() { location = relativePath; } else { // Not yet generated - check if the report is on its way - for (Object o : project.getReportPlugins()) { - ReportPlugin report = (ReportPlugin) o; - - String artifactId = report.getArtifactId(); + Reporting reporting = project.getModel().getReporting(); + List reportPlugins = + reporting != null ? reporting.getPlugins() : Collections.emptyList(); + for (ReportPlugin plugin : reportPlugins) { + String artifactId = plugin.getArtifactId(); if ("maven-jxr-plugin".equals(artifactId) || "jxr-maven-plugin".equals(artifactId)) { location = relativePath; } @@ -284,6 +290,10 @@ private String determineXrefLocation() { return location; } + private File getXrefTestLocation() { + return xrefTestLocation != null ? xrefTestLocation : new File(getReportOutputDirectory(), "xref-test" ); + } + /** * @param locale The locale * @param key The key to search for diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireReportTest.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireReportTest.java index 1f42a6076a..f84d504b33 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireReportTest.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/SurefireReportTest.java @@ -90,7 +90,7 @@ public void testBasicSurefireReport() throws Exception { File outputDir = (File) getVariableValueFromObject(mojo, "outputDirectory"); boolean showSuccess = (Boolean) getVariableValueFromObject(mojo, "showSuccess"); File reportsDir = (File) getVariableValueFromObject(mojo, "reportsDirectory"); - File xrefLocation = (File) getVariableValueFromObject(mojo, "xrefLocation"); + File xrefTestLocation = (File) getVariableValueFromObject(mojo, "xrefTestLocation"); boolean linkXRef = (Boolean) getVariableValueFromObject(mojo, "linkXRef"); assertEquals(new File(getBasedir() + "/target/site/unit/basic-surefire-report-test"), outputDir); @@ -101,7 +101,7 @@ public void testBasicSurefireReport() throws Exception { reportsDir.getAbsolutePath()); assertEquals( new File(getBasedir() + "/target/site/unit/basic-surefire-report-test/xref-test").getAbsolutePath(), - xrefLocation.getAbsolutePath()); + xrefTestLocation.getAbsolutePath()); assertTrue(linkXRef); mojo.execute(); diff --git a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-anchor-test-cases/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-anchor-test-cases/plugin-config.xml index fe0e78d7f7..a215e335ae 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-anchor-test-cases/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-anchor-test-cases/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/basic-surefire-report-anchor-test-cases/surefire-reports surefire-report - ${basedir}/target/site/unit/basic-surefire-report-anchor-test-cases/xref-test + ${basedir}/target/site/unit/basic-surefire-report-anchor-test-cases/xref-test diff --git a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/plugin-config.xml index 01f10b34a3..b1fd94a512 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-linkxref-false/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/basic-surefire-report-linkxref-false/surefire-reports surefire-report - ${basedir}/target/site/unit/basic-surefire-report-linkxref-false/xref-test + ${basedir}/target/site/unit/basic-surefire-report-linkxref-false/xref-test false diff --git a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/plugin-config.xml index f53e5dfea3..ee4e974179 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-reporting-null/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/basic-surefire-report-reporting-null/surefire-reports surefire-report - ${basedir}/target/site/unit/basic-surefire-report-test/xref-test + ${basedir}/target/site/unit/basic-surefire-report-test/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/plugin-config.xml index 27d6b2e388..452fb05163 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-success-false/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/basic-surefire-report-success-false/surefire-reports surefire-report - ${basedir}/target/site/unit/basic-surefire-report-success-false/xref-test + ${basedir}/target/site/unit/basic-surefire-report-success-false/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/plugin-config.xml index 782c972c84..5a4f3fb56a 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/basic-surefire-report-test/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/basic-surefire-report-test/surefire-reports surefire-report - ${basedir}/target/site/unit/basic-surefire-report-test/xref-test + ${basedir}/target/site/unit/basic-surefire-report-test/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed-trimStackTrace/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed-trimStackTrace/plugin-config.xml index d02fe60dab..eca42f0215 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed-trimStackTrace/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed-trimStackTrace/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/surefire-report-enclosed-trimStackTrace/surefire-reports surefire-report - ${basedir}/target/site/unit/surefire-report-enclosed-trimStackTrace/xref-test + ${basedir}/target/site/unit/surefire-report-enclosed-trimStackTrace/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed/plugin-config.xml index 5bb6b5ab64..0424ef127d 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-enclosed/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/surefire-report-enclosed/surefire-reports surefire-report - ${basedir}/target/site/unit/surefire-report-enclosed/xref-test + ${basedir}/target/site/unit/surefire-report-enclosed/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass-trimStackTrace/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass-trimStackTrace/plugin-config.xml index 7e6c0a506c..e1657df724 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass-trimStackTrace/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass-trimStackTrace/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/surefire-report-nestedClass-trimStackTrace/surefire-reports surefire-report - ${basedir}/target/site/unit/surefire-report-nestedClass-trimStackTrace/xref-test + ${basedir}/target/site/unit/surefire-report-nestedClass-trimStackTrace/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass/plugin-config.xml index 5b577227c5..f8e4752b06 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-nestedClass/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/surefire-report-nestedClass/surefire-reports surefire-report - ${basedir}/target/site/unit/surefire-report-nestedClass/xref-test + ${basedir}/target/site/unit/surefire-report-nestedClass/xref-test true diff --git a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-single-error/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-single-error/plugin-config.xml index cfb5505a25..df3e568991 100644 --- a/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-single-error/plugin-config.xml +++ b/maven-surefire-report-plugin/src/test/resources/unit/surefire-report-single-error/plugin-config.xml @@ -29,7 +29,7 @@ ${basedir}/src/test/resources/unit/surefire-report-single-error/surefire-reports surefire-report - ${basedir}/target/site/unit/surefire-report-single-error/xref-test + ${basedir}/target/site/unit/surefire-report-single-error/xref-test true