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 d402b69751..2a68f84674 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; @@ -77,16 +79,19 @@ 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. + *
+ * Default: {@link #getReportOutputDirectory()} + {@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. @@ -149,7 +154,7 @@ public void executeReport(Locale locale) { locale, getConsoleLogger(), getReportsDirectories(), - determineXrefLocation(), + constructXrefTestLocation(), showSuccess); r.render(); } @@ -251,25 +256,27 @@ private List getProjectsWithoutRoot() { return result; } - private String determineXrefLocation() { + private String constructXrefTestLocation() { String location = null; - if (linkXRef) { + File xrefTestLocation = getXrefTestLocation(); + String relativePath = PathTool.getRelativePath( - getReportOutputDirectory().getAbsolutePath(), xrefLocation.getAbsolutePath()); + getReportOutputDirectory().getAbsolutePath(), xrefTestLocation.getAbsolutePath()); if (relativePath == null || relativePath.isEmpty()) { relativePath = "."; } - relativePath = relativePath + "/" + xrefLocation.getName(); - if (xrefLocation.exists()) { + relativePath = relativePath + "/" + xrefTestLocation.getName(); + if (xrefTestLocation.exists()) { // XRef was already generated by manual execution of a lifecycle binding 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; } @@ -283,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/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java index bdcce6b04b..af41e63ef5 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java @@ -18,7 +18,40 @@ */ package org.apache.maven.plugins.surefire.report.stubs; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.model.Model; +import org.apache.maven.model.ReportPlugin; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; + public class EnclosedStub extends SurefireReportMavenProjectStub { + private List reportPlugins = new ArrayList<>(); + + public EnclosedStub() { + MavenXpp3Reader pomReader = new MavenXpp3Reader(); + Model model = null; + + try (InputStream is = new FileInputStream(getFile())) { + model = pomReader.read(is); + setModel(model); + } catch (Exception e) { + } + + setReportPlugins(model.getReporting().getPlugins()); + } + + public void setReportPlugins(List plugins) { + this.reportPlugins = plugins; + } + + /** {@inheritDoc} */ + @Override + public List getReportPlugins() { + return reportPlugins; + } @Override protected String getProjectDirName() { diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java index f5ba0e74b2..a4fb0169c2 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java @@ -18,7 +18,40 @@ */ package org.apache.maven.plugins.surefire.report.stubs; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.model.Model; +import org.apache.maven.model.ReportPlugin; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; + public class EnclosedTrimStackTraceStub extends SurefireReportMavenProjectStub { + private List reportPlugins = new ArrayList<>(); + + public EnclosedTrimStackTraceStub() { + MavenXpp3Reader pomReader = new MavenXpp3Reader(); + Model model = null; + + try (InputStream is = new FileInputStream(getFile())) { + model = pomReader.read(is); + setModel(model); + } catch (Exception e) { + } + + setReportPlugins(model.getReporting().getPlugins()); + } + + public void setReportPlugins(List plugins) { + this.reportPlugins = plugins; + } + + /** {@inheritDoc} */ + @Override + public List getReportPlugins() { + return reportPlugins; + } @Override protected String getProjectDirName() { diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java index 6f1547b37c..2b80adc72a 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java @@ -18,7 +18,40 @@ */ package org.apache.maven.plugins.surefire.report.stubs; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.model.Model; +import org.apache.maven.model.ReportPlugin; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; + public class NestedClassStub extends SurefireReportMavenProjectStub { + private List reportPlugins = new ArrayList<>(); + + public NestedClassStub() { + MavenXpp3Reader pomReader = new MavenXpp3Reader(); + Model model = null; + + try (InputStream is = new FileInputStream(getFile())) { + model = pomReader.read(is); + setModel(model); + } catch (Exception e) { + } + + setReportPlugins(model.getReporting().getPlugins()); + } + + public void setReportPlugins(List plugins) { + this.reportPlugins = plugins; + } + + /** {@inheritDoc} */ + @Override + public List getReportPlugins() { + return reportPlugins; + } @Override protected String getProjectDirName() { diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java index 1a30076f59..1cebc20157 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java @@ -18,7 +18,40 @@ */ package org.apache.maven.plugins.surefire.report.stubs; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.model.Model; +import org.apache.maven.model.ReportPlugin; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; + public class NestedClassTrimStackTraceStub extends SurefireReportMavenProjectStub { + private List reportPlugins = new ArrayList<>(); + + public NestedClassTrimStackTraceStub() { + MavenXpp3Reader pomReader = new MavenXpp3Reader(); + Model model = null; + + try (InputStream is = new FileInputStream(getFile())) { + model = pomReader.read(is); + setModel(model); + } catch (Exception e) { + } + + setReportPlugins(model.getReporting().getPlugins()); + } + + public void setReportPlugins(List plugins) { + this.reportPlugins = plugins; + } + + /** {@inheritDoc} */ + @Override + public List getReportPlugins() { + return reportPlugins; + } @Override protected String getProjectDirName() { diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java index 60e83182e7..8bff72dc4c 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java @@ -18,7 +18,40 @@ */ package org.apache.maven.plugins.surefire.report.stubs; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.maven.model.Model; +import org.apache.maven.model.ReportPlugin; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; + public class SingleErrorStub extends SurefireReportMavenProjectStub { + private List reportPlugins = new ArrayList<>(); + + public SingleErrorStub() { + MavenXpp3Reader pomReader = new MavenXpp3Reader(); + Model model = null; + + try (InputStream is = new FileInputStream(getFile())) { + model = pomReader.read(is); + setModel(model); + } catch (Exception e) { + } + + setReportPlugins(model.getReporting().getPlugins()); + } + + public void setReportPlugins(List plugins) { + this.reportPlugins = plugins; + } + + /** {@inheritDoc} */ + @Override + public List getReportPlugins() { + return reportPlugins; + } @Override protected String getProjectDirName() { diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub.java index 952b6ff392..9f5606292f 100644 --- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub.java +++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub.java @@ -47,22 +47,6 @@ public File getFile() { return new File(getBasedir(), "plugin-config.xml"); } - /** - * {@inheritDoc} - */ - @Override - public List getReportPlugins() { - Reporting reporting = new Reporting(); - - ReportPlugin reportPlugin = new ReportPlugin(); - reportPlugin.setGroupId("org.apache.maven.plugins"); - reportPlugin.setArtifactId("maven-jxr-plugin"); - reportPlugin.setVersion("2.0-SNAPSHOT"); - reporting.addPlugin(reportPlugin); - - return reporting.getPlugins(); - } - @Override public List getRemoteArtifactRepositories() { ArtifactRepository repository = new MavenArtifactRepository( 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..0307e5d94f 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..c8258fdc54 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..982b1f33fb 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..077c4a93ee 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..0dcdf7b75a 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..bcdeecc9d2 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..2191116b7c 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..f86825f985 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + 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..ab23bae248 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,10 +29,18 @@ ${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 + + + + org.apache.maven.plugins + maven-jxr-plugin + + +