You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2024/01/02 15:22:50 UTC

(maven-surefire) 01/02: [SUREFIRE-2228] Upgrade to Doxia 2.0.0 Milestone Stack

This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch doxia-2.0.0
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit c6a3efb0447513cb8c33256586d361bbcd0800fc
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sun May 7 01:34:04 2023 +0200

    [SUREFIRE-2228] Upgrade to Doxia 2.0.0 Milestone Stack
    
    This closes #629
---
 maven-surefire-report-plugin/pom.xml               |   7 +-
 .../surefire/report/AbstractSurefireReport.java    |  20 ++--
 .../surefire/report/FailsafeOnlyReport.java        |   2 +-
 .../surefire/report/SurefireReportRenderer.java    |  66 ++++-------
 .../plugins/surefire/report/Surefire597Test.java   |  22 ++--
 .../surefire/report/SurefireReportTest.java        | 124 ++++++++++++---------
 ...nProjectStub2.java => AnchorTestCasesStub.java} |  17 +--
 ...ortMavenProjectStub2.java => EnclosedStub.java} |  17 +--
 ...tStub2.java => EnclosedTrimStackTraceStub.java} |  17 +--
 ...venProjectStub2.java => LinkXrefFalseStub.java} |  17 +--
 ...MavenProjectStub2.java => NestedClassStub.java} |  17 +--
 ...ub2.java => NestedClassTrimStackTraceStub.java} |  17 +--
 ...tMavenProjectStub2.java => ReportTestStub.java} |  17 +--
 ...venProjectStub2.java => ReportingNullStub.java} |   8 +-
 ...MavenProjectStub2.java => SingleErrorStub.java} |  17 +--
 ...avenProjectStub2.java => SuccessFalseStub.java} |  17 +--
 ...avenProjectStub2.java => Surefire1183Stub.java} |  17 +--
 .../stubs/SurefireReportMavenProjectStub.java      |  30 +++--
 .../plugin-config.xml                              |   3 +-
 .../plugin-config.xml                              |   3 +-
 .../plugin-config.xml                              |   3 +-
 .../plugin-config.xml                              |   3 +-
 .../basic-surefire-report-test/plugin-config.xml   |   3 +-
 .../resources/unit/surefire-1183/plugin-config.xml |  31 +++---
 .../plugin-config.xml                              |   3 +-
 .../surefire-report-enclosed/plugin-config.xml     |   3 +-
 .../plugin-config.xml                              |   3 +-
 .../surefire-report-nestedClass/plugin-config.xml  |   3 +-
 .../surefire-report-single-error/plugin-config.xml |   3 +-
 pom.xml                                            |  21 ----
 .../surefire-260-testWithIdenticalNames/pom.xml    |   4 +-
 31 files changed, 196 insertions(+), 339 deletions(-)

diff --git a/maven-surefire-report-plugin/pom.xml b/maven-surefire-report-plugin/pom.xml
index 3655940da..2499d74f4 100644
--- a/maven-surefire-report-plugin/pom.xml
+++ b/maven-surefire-report-plugin/pom.xml
@@ -46,7 +46,7 @@
   </prerequisites>
 
   <properties>
-    <doxiaVersion>1.12.0</doxiaVersion>
+    <doxiaVersion>2.0.0-M8</doxiaVersion>
     <aetherVersion>1.0.0.v20140518</aetherVersion>
   </properties>
 
@@ -86,13 +86,10 @@
       <artifactId>doxia-core</artifactId>
       <version>${doxiaVersion}</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.maven.reporting</groupId>
-      <artifactId>maven-reporting-api</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-impl</artifactId>
+      <version>4.0.0-M13</version>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
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 847c29cb2..d402b6975 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
@@ -37,7 +37,6 @@ import org.apache.maven.plugins.annotations.Component;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.AbstractMavenReport;
-import org.apache.maven.reporting.MavenReportException;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.shared.utils.PathTool;
 import org.codehaus.plexus.i18n.I18N;
@@ -77,12 +76,6 @@ public abstract class AbstractSurefireReport extends AbstractMavenReport {
     @Parameter
     private File reportsDirectory;
 
-    /**
-     * The projects in the reactor for aggregation report.
-     */
-    @Parameter(defaultValue = "${reactorProjects}", readonly = true)
-    private List<MavenProject> reactorProjects;
-
     /**
      * Location of the Xrefs to link.
      */
@@ -148,16 +141,16 @@ public abstract class AbstractSurefireReport extends AbstractMavenReport {
      * {@inheritDoc}
      */
     @Override
-    public void executeReport(Locale locale) throws MavenReportException {
+    public void executeReport(Locale locale) {
         SurefireReportRenderer r = new SurefireReportRenderer(
                 getSink(),
                 getI18N(locale),
                 getI18Nsection(),
                 locale,
                 getConsoleLogger(),
-                showSuccess,
                 getReportsDirectories(),
-                determineXrefLocation());
+                determineXrefLocation(),
+                showSuccess);
         r.render();
     }
 
@@ -262,7 +255,8 @@ public abstract class AbstractSurefireReport extends AbstractMavenReport {
         String location = null;
 
         if (linkXRef) {
-            String relativePath = PathTool.getRelativePath(getOutputDirectory(), xrefLocation.getAbsolutePath());
+            String relativePath = PathTool.getRelativePath(
+                    getReportOutputDirectory().getAbsolutePath(), xrefLocation.getAbsolutePath());
             if (relativePath == null || relativePath.isEmpty()) {
                 relativePath = ".";
             }
@@ -345,6 +339,10 @@ public abstract class AbstractSurefireReport extends AbstractMavenReport {
         return project;
     }
 
+    protected List<MavenProject> getReactorProjects() {
+        return reactorProjects;
+    }
+
     // TODO Review, especially Locale.getDefault()
     private static class CustomI18N implements I18N {
         private final MavenProject project;
diff --git a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/FailsafeOnlyReport.java b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/FailsafeOnlyReport.java
index 7e6b20840..ae2b62078 100644
--- a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/FailsafeOnlyReport.java
+++ b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/FailsafeOnlyReport.java
@@ -61,7 +61,7 @@ public class FailsafeOnlyReport extends AbstractSurefireReport {
     @Override
     protected File getSurefireReportsDirectory(MavenProject subProject) {
         String buildDir = subProject.getBuild().getDirectory();
-        return new File(buildDir + "/failsafe-reports");
+        return new File(buildDir, "failsafe-reports");
     }
 
     @Override
diff --git a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportRenderer.java b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportRenderer.java
index e19c2bca2..c9dafe73f 100644
--- a/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportRenderer.java
+++ b/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportRenderer.java
@@ -50,9 +50,9 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
     private final Locale locale;
 
     private final SurefireReportParser parser;
-    private final boolean showSuccess;
-    private final String xrefLocation;
     private final List<ReportTestSuite> testSuites;
+    private final String xrefLocation;
+    private final boolean showSuccess;
 
     public SurefireReportRenderer(
             Sink sink,
@@ -60,9 +60,9 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
             String i18nSection,
             Locale locale,
             ConsoleLogger consoleLogger,
-            boolean showSuccess,
             List<File> reportsDirectories,
-            String xrefLocation) {
+            String xrefLocation,
+            boolean showSuccess) {
         super(sink);
         this.i18n = i18n;
         this.i18nSection = i18nSection;
@@ -112,11 +112,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
     public void renderBody() {
         javaScript(javascriptToggleDisplayCode());
 
-        sink.section1();
-        sink.sectionTitle1();
-        sink.text(getTitle());
-        sink.sectionTitle1_();
-        sink.section1_();
+        startSection(getTitle());
 
         renderSectionSummary();
 
@@ -125,16 +121,14 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
         renderSectionTestCases();
 
         renderSectionFailureDetails();
+
+        endSection();
     }
 
     private void renderSectionSummary() {
         Map<String, Object> summary = parser.getSummary(testSuites);
 
-        sink.section1();
-        sinkAnchor("Summary");
-        sink.sectionTitle1();
-        sink.text(getI18nString("surefire", "label.summary"));
-        sink.sectionTitle1_();
+        startSection(getI18nString("surefire", "label.summary"), "Summary");
 
         constructHotLinks();
 
@@ -168,7 +162,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
 
         sink.lineBreak();
 
-        sink.section1_();
+        endSection();
     }
 
     private void renderSectionPackages() {
@@ -177,11 +171,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
             return;
         }
 
-        sink.section1();
-        sinkAnchor("Package_List");
-        sink.sectionTitle1();
-        sink.text(getI18nString("surefire", "label.packagelist"));
-        sink.sectionTitle1_();
+        startSection(getI18nString("surefire", "label.packagelist"), "Package_List");
 
         constructHotLinks();
 
@@ -227,11 +217,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
 
             List<ReportTestSuite> testSuiteList = entry.getValue();
 
-            sink.section2();
-            sinkAnchor(packageName);
-            sink.sectionTitle2();
-            sink.text(packageName);
-            sink.sectionTitle2_();
+            startSection(packageName);
 
             boolean showTable = false;
 
@@ -266,12 +252,12 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
                 endTable();
             }
 
-            sink.section2_();
+            endSection();
         }
 
         sink.lineBreak();
 
-        sink.section1_();
+        endSection();
     }
 
     private void renderSectionTestSuite(ReportTestSuite suite) {
@@ -320,11 +306,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
             return;
         }
 
-        sink.section1();
-        sinkAnchor("Test_Cases");
-        sink.sectionTitle1();
-        sink.text(getI18nString("surefire", "label.testcases"));
-        sink.sectionTitle1_();
+        startSection(getI18nString("surefire", "label.testcases"), "Test_Cases");
 
         constructHotLinks();
 
@@ -332,11 +314,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
             List<ReportTestCase> testCases = suite.getTestCases();
 
             if (!testCases.isEmpty()) {
-                sink.section2();
-                sinkAnchor(suite.getPackageName() + '.' + suite.getName());
-                sink.sectionTitle2();
-                sink.text(suite.getName());
-                sink.sectionTitle2_();
+                startSection(suite.getName(), suite.getPackageName() + '.' + suite.getName());
 
                 boolean showTable = false;
 
@@ -360,13 +338,13 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
                     endTable();
                 }
 
-                sink.section2_();
+                endSection();
             }
         }
 
         sink.lineBreak();
 
-        sink.section1_();
+        endSection();
     }
 
     private void constructTestCaseSection(ReportTestCase testCase) {
@@ -469,7 +447,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
     }
 
     private String toHtmlId(String id) {
-        return DoxiaUtils.isValidId(id) ? id : DoxiaUtils.encodeId(id, true);
+        return DoxiaUtils.isValidId(id) ? id : DoxiaUtils.encodeId(id);
     }
 
     private void renderSectionFailureDetails() {
@@ -478,11 +456,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
             return;
         }
 
-        sink.section1();
-        sinkAnchor("Failure_Details");
-        sink.sectionTitle1();
-        sink.text(getI18nString("surefire", "label.failuredetails"));
-        sink.sectionTitle1_();
+        startSection(getI18nString("surefire", "label.failuredetails"), "Failure_Details");
 
         constructHotLinks();
 
@@ -554,7 +528,7 @@ public class SurefireReportRenderer extends AbstractMavenReportRenderer {
 
         sink.lineBreak();
 
-        sink.section1_();
+        endSection();
     }
 
     private void constructHotLinks() {
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Surefire597Test.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Surefire597Test.java
index 598c91678..b1a9ddb89 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Surefire597Test.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/Surefire597Test.java
@@ -48,12 +48,12 @@ public class Surefire597Test extends TestCase {
         i18n.initialize();
         ConsoleLogger consoleLogger = new NullConsoleLogger();
         SurefireReportRenderer r = new SurefireReportRenderer(
-                sink, i18n, "surefire", SiteTool.DEFAULT_LOCALE, consoleLogger, true, singletonList(report), null);
+                sink, i18n, "surefire", SiteTool.DEFAULT_LOCALE, consoleLogger, singletonList(report), null, true);
         r.render();
         String xml = writer.toString();
         assertThat(
                 xml,
-                containsString(toSystemNewLine("<table border=\"0\" class=\"bodyTable\">\n"
+                containsString(toSystemNewLine("<table class=\"bodyTable\">\n"
                         + "<tr class=\"a\">\n"
                         + "<th>Tests</th>\n"
                         + "<th>Errors</th>\n"
@@ -62,7 +62,7 @@ public class Surefire597Test extends TestCase {
                         + "<th>Success Rate</th>\n"
                         + "<th>Time</th></tr>\n"
                         + "<tr class=\"b\">\n"
-                        + "<td align=\"left\">1</td>\n"
+                        + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
                         + "<td>0</td>\n"
@@ -72,7 +72,7 @@ public class Surefire597Test extends TestCase {
                         + "</table>")));
         assertThat(
                 xml,
-                containsString(toSystemNewLine("<table border=\"0\" class=\"bodyTable\">\n"
+                containsString(toSystemNewLine("<table class=\"bodyTable\">\n"
                         + "<tr class=\"a\">\n"
                         + "<th>Package</th>\n"
                         + "<th>Tests</th>\n"
@@ -82,7 +82,7 @@ public class Surefire597Test extends TestCase {
                         + "<th>Success Rate</th>\n"
                         + "<th>Time</th></tr>\n"
                         + "<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire\">surefire</a></td>\n"
+                        + "<td><a href=\"#surefire\">surefire</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
@@ -91,7 +91,7 @@ public class Surefire597Test extends TestCase {
                         + "<td>0 s</td></tr></table>")));
         assertThat(
                 xml,
-                containsString(toSystemNewLine("<table border=\"0\" class=\"bodyTable\">\n"
+                containsString(toSystemNewLine("<table class=\"bodyTable\">\n"
                         + "<tr class=\"a\">\n"
                         + "<th>-</th>\n"
                         + "<th>Class</th>\n"
@@ -102,7 +102,7 @@ public class Surefire597Test extends TestCase {
                         + "<th>Success Rate</th>\n"
                         + "<th>Time</th></tr>\n"
                         + "<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire.MyTest\"><img src=\"images/icon_error_sml.gif\" alt=\"\" /></a></td>\n"
+                        + "<td><a href=\"#surefire.MyTest\"><img src=\"images/icon_error_sml.gif\" /></a></td>\n"
                         + "<td><a href=\"#surefire.MyTest\">MyTest</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
@@ -112,15 +112,15 @@ public class Surefire597Test extends TestCase {
                         + "<td>0 s</td></tr></table>")));
         assertThat(
                 xml,
-                containsString(toSystemNewLine("<table border=\"0\" class=\"bodyTable\">\n"
+                containsString(toSystemNewLine("<table class=\"bodyTable\">\n"
                         + "<tr class=\"a\">\n"
-                        + "<td align=\"left\"><img src=\"images/icon_error_sml.gif\" alt=\"\" /></td>\n"
+                        + "<td><img src=\"images/icon_error_sml.gif\" /></td>\n"
                         + "<td><a id=\"surefire.MyTest.test\"></a>test</td></tr>\n"
                         + "<tr class=\"b\">\n"
-                        + "<td align=\"left\">-</td>\n"
+                        + "<td>-</td>\n"
                         + "<td>java.lang.RuntimeException: java.lang.IndexOutOfBoundsException: msg</td></tr>\n"
                         + "<tr class=\"a\">\n"
-                        + "<td align=\"left\">-</td>\n"
+                        + "<td>-</td>\n"
                         + "<td>\n"
                         + "<div id=\"test-error\">surefire.MyTest:13</div></td></tr></table>")));
     }
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 5d38c0c46..1f42a6076 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
@@ -19,16 +19,19 @@
 package org.apache.maven.plugins.surefire.report;
 
 import java.io.File;
-import java.io.UnsupportedEncodingException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.Locale;
+import java.util.Collections;
+import java.util.List;
 
+import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.LegacySupport;
+import org.apache.maven.plugin.MojoExecution;
+import org.apache.maven.plugin.descriptor.MojoDescriptor;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.apache.maven.plugin.testing.ArtifactStubFactory;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 import org.apache.maven.plugins.surefire.report.stubs.DependencyArtifactStubFactory;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.utils.io.FileUtils;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
@@ -45,28 +48,20 @@ import static org.hamcrest.MatcherAssert.assertThat;
 public class SurefireReportTest extends AbstractMojoTestCase {
     private ArtifactStubFactory artifactStubFactory;
 
-    // Can be removed with Doxia 2.0.0
-    private Locale origLocale;
-
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         artifactStubFactory = new DependencyArtifactStubFactory(getTestFile("target"), true, false);
         artifactStubFactory.getWorkingDir().mkdirs();
-
-        origLocale = Locale.getDefault();
-        Locale.setDefault(Locale.ROOT);
     }
 
-    @Override
-    protected void tearDown() throws Exception {
-        Locale.setDefault(origLocale);
-        super.tearDown();
+    protected File getPluginXmlFile(String projectDirName) {
+        return new File(getBasedir(), "src/test/resources/unit/" + projectDirName + "/plugin-config.xml");
     }
 
     protected SurefireReport createReportMojo(File pluginXmlFile) throws Exception {
         SurefireReport mojo = (SurefireReport) lookupMojo("report", pluginXmlFile);
-        assertNotNull("Mojo found.", mojo);
+        assertNotNull("Mojo not found.", mojo);
 
         LegacySupport legacySupport = lookup(LegacySupport.class);
         legacySupport.setSession(newMavenSession(new MavenProjectStub()));
@@ -75,18 +70,26 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         repoSession.setLocalRepositoryManager(new SimpleLocalRepositoryManagerFactory()
                 .newInstance(repoSession, new LocalRepository(artifactStubFactory.getWorkingDir())));
 
-        // setVariableValueToObject( mojo, "session", legacySupport.getSession() );
-        setVariableValueToObject(mojo, "remoteRepositories", mojo.getProject().getRemoteArtifactRepositories());
+        List<MavenProject> reactorProjects =
+                mojo.getReactorProjects() != null ? mojo.getReactorProjects() : Collections.emptyList();
+
+        setVariableValueToObject(mojo, "mojoExecution", getMockMojoExecution());
+        // setVariableValueToObject(mojo, "session", legacySupport.getSession());
+        setVariableValueToObject(mojo, "repoSession", legacySupport.getRepositorySession());
+        setVariableValueToObject(mojo, "reactorProjects", reactorProjects);
+        setVariableValueToObject(
+                mojo, "remoteProjectRepositories", mojo.getProject().getRemoteProjectRepositories());
+        setVariableValueToObject(
+                mojo, "siteDirectory", new File(mojo.getProject().getBasedir(), "src/site"));
         return mojo;
     }
 
     public void testBasicSurefireReport() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "basic-surefire-report-test/plugin-config.xml");
+        File testPom = getPluginXmlFile("basic-surefire-report-test");
         SurefireReport mojo = createReportMojo(testPom);
         File outputDir = (File) getVariableValueFromObject(mojo, "outputDirectory");
         boolean showSuccess = (Boolean) getVariableValueFromObject(mojo, "showSuccess");
         File reportsDir = (File) getVariableValueFromObject(mojo, "reportsDirectory");
-        String outputName = (String) getVariableValueFromObject(mojo, "outputName");
         File xrefLocation = (File) getVariableValueFromObject(mojo, "xrefLocation");
         boolean linkXRef = (Boolean) getVariableValueFromObject(mojo, "linkXRef");
 
@@ -96,7 +99,6 @@ public class SurefireReportTest extends AbstractMojoTestCase {
                 new File(getBasedir() + "/src/test/resources/unit/basic-surefire-report-test/surefire-reports")
                         .getAbsolutePath(),
                 reportsDir.getAbsolutePath());
-        assertEquals("surefire-report", outputName);
         assertEquals(
                 new File(getBasedir() + "/target/site/unit/basic-surefire-report-test/xref-test").getAbsolutePath(),
                 xrefLocation.getAbsolutePath());
@@ -111,14 +113,24 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertTrue(idx >= 0);
     }
 
-    private File getUnitBaseDir() throws UnsupportedEncodingException {
-        URL resource = getClass().getResource("/unit");
-        // URLDecoder.decode necessary for JDK 1.5+, where spaces are escaped to %20
-        return new File(URLDecoder.decode(resource.getPath(), "UTF-8")).getAbsoluteFile();
+    private MojoExecution getMockMojoExecution() {
+        MojoDescriptor md = new MojoDescriptor();
+        md.setGoal("report");
+
+        MojoExecution me = new MojoExecution(md);
+
+        PluginDescriptor pd = new PluginDescriptor();
+        Plugin p = new Plugin();
+        p.setGroupId("org.apache.maven.plugins");
+        p.setArtifactId("maven-surefire-report-plugin");
+        pd.setPlugin(p);
+        md.setPluginDescriptor(pd);
+
+        return me;
     }
 
     public void testBasicSurefireReportIfShowSuccessIsFalse() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "basic-surefire-report-success-false/plugin-config.xml");
+        File testPom = getPluginXmlFile("basic-surefire-report-success-false");
         SurefireReport mojo = createReportMojo(testPom);
         boolean showSuccess = (Boolean) getVariableValueFromObject(mojo, "showSuccess");
         assertFalse(showSuccess);
@@ -133,7 +145,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testBasicSurefireReportIfLinkXrefIsFalse() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "basic-surefire-report-linkxref-false/plugin-config.xml");
+        File testPom = getPluginXmlFile("basic-surefire-report-linkxref-false");
         SurefireReport mojo = createReportMojo(testPom);
         boolean linkXRef = (Boolean) getVariableValueFromObject(mojo, "linkXRef");
         assertFalse(linkXRef);
@@ -148,7 +160,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testBasicSurefireReportIfReportingIsNull() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "basic-surefire-report-reporting-null/plugin-config.xml");
+        File testPom = getPluginXmlFile("basic-surefire-report-reporting-null");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report =
@@ -162,7 +174,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
 
     @SuppressWarnings("checkstyle:methodname")
     public void testBasicSurefireReport_AnchorTestCases() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "basic-surefire-report-anchor-test-cases/plugin-config.xml");
+        File testPom = getPluginXmlFile("basic-surefire-report-anchor-test-cases");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report =
@@ -179,7 +191,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testSurefireReportSingleError() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "surefire-report-single-error/plugin-config.xml");
+        File testPom = getPluginXmlFile("surefire-report-single-error");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report = new File(getBasedir(), "target/site/unit/surefire-report-single-error/surefire-report.html");
@@ -189,7 +201,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">1</td>\n"
+                        + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
                         + "<td>0</td>\n"
@@ -199,7 +211,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire\">surefire</a></td>\n"
+                        + "<td><a href=\"#surefire\">surefire</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
@@ -209,9 +221,9 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">"
+                        + "<td>"
                         + "<a href=\"#surefire.MyTest\">"
-                        + "<img src=\"images/icon_error_sml.gif\" alt=\"\" />"
+                        + "<img src=\"images/icon_error_sml.gif\" />"
                         + "</a>"
                         + "</td>\n"
                         + "<td><a href=\"#surefire.MyTest\">MyTest</a></td>\n"
@@ -266,7 +278,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testSurefireReportNestedClassTrimStackTrace() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "surefire-report-nestedClass-trimStackTrace/plugin-config.xml");
+        File testPom = getPluginXmlFile("surefire-report-nestedClass-trimStackTrace");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report = new File(
@@ -277,7 +289,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">1</td>\n"
+                        + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
                         + "<td>0</td>\n"
@@ -287,7 +299,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire\">surefire</a></td>\n"
+                        + "<td><a href=\"#surefire\">surefire</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
@@ -297,9 +309,9 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">"
+                        + "<td>"
                         + "<a href=\"#surefire.MyTest\">"
-                        + "<img src=\"images/icon_error_sml.gif\" alt=\"\" />"
+                        + "<img src=\"images/icon_error_sml.gif\" />"
                         + "</a>"
                         + "</td>\n"
                         + "<td><a href=\"#surefire.MyTest\">MyTest</a></td>\n"
@@ -330,7 +342,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testSurefireReportNestedClass() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "surefire-report-nestedClass/plugin-config.xml");
+        File testPom = getPluginXmlFile("surefire-report-nestedClass");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report = new File(getBasedir(), "target/site/unit/surefire-report-nestedClass/surefire-report.html");
@@ -340,7 +352,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">1</td>\n"
+                        + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
                         + "<td>0</td>\n"
@@ -350,7 +362,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire\">surefire</a></td>\n"
+                        + "<td><a href=\"#surefire\">surefire</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
@@ -360,9 +372,9 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">"
+                        + "<td>"
                         + "<a href=\"#surefire.MyTest\">"
-                        + "<img src=\"images/icon_error_sml.gif\" alt=\"\" />"
+                        + "<img src=\"images/icon_error_sml.gif\" />"
                         + "</a>"
                         + "</td>\n"
                         + "<td><a href=\"#surefire.MyTest\">MyTest</a></td>\n"
@@ -417,7 +429,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testSurefireReportEnclosedTrimStackTrace() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "surefire-report-enclosed-trimStackTrace/plugin-config.xml");
+        File testPom = getPluginXmlFile("surefire-report-enclosed-trimStackTrace");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report =
@@ -428,7 +440,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">1</td>\n"
+                        + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
                         + "<td>0</td>\n"
@@ -438,7 +450,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire\">surefire</a></td>\n"
+                        + "<td><a href=\"#surefire\">surefire</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
@@ -448,9 +460,9 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">"
+                        + "<td>"
                         + "<a href=\"#surefire.MyTest$A\">"
-                        + "<img src=\"images/icon_error_sml.gif\" alt=\"\" />"
+                        + "<img src=\"images/icon_error_sml.gif\" />"
                         + "</a>"
                         + "</td>\n"
                         + "<td><a href=\"#surefire.MyTest$A\">MyTest$A</a></td>\n"
@@ -481,7 +493,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testSurefireReportEnclosed() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "surefire-report-enclosed/plugin-config.xml");
+        File testPom = getPluginXmlFile("surefire-report-enclosed");
         SurefireReport mojo = createReportMojo(testPom);
         mojo.execute();
         File report = new File(getBasedir(), "target/site/unit/surefire-report-enclosed/surefire-report.html");
@@ -491,7 +503,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">1</td>\n"
+                        + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
                         + "<td>0</td>\n"
@@ -501,7 +513,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\"><a href=\"#surefire\">surefire</a></td>\n"
+                        + "<td><a href=\"#surefire\">surefire</a></td>\n"
                         + "<td>1</td>\n"
                         + "<td>1</td>\n"
                         + "<td>0</td>\n"
@@ -511,9 +523,9 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertThat(
                 htmlContent,
                 containsString(toSystemNewLine("<tr class=\"b\">\n"
-                        + "<td align=\"left\">"
+                        + "<td>"
                         + "<a href=\"#surefire.MyTest$A\">"
-                        + "<img src=\"images/icon_error_sml.gif\" alt=\"\" />"
+                        + "<img src=\"images/icon_error_sml.gif\" />"
                         + "</a>"
                         + "</td>\n"
                         + "<td><a href=\"#surefire.MyTest$A\">MyTest$A</a></td>\n"
@@ -578,7 +590,7 @@ public class SurefireReportTest extends AbstractMojoTestCase {
     }
 
     public void testCustomTitleAndDescriptionReport() throws Exception {
-        File testPom = new File(getUnitBaseDir(), "surefire-1183/plugin-config.xml");
+        File testPom = getPluginXmlFile("surefire-1183");
         SurefireReport mojo = createReportMojo(testPom);
 
         File outputDir = (File) getVariableValueFromObject(mojo, "outputDirectory");
@@ -599,6 +611,8 @@ public class SurefireReportTest extends AbstractMojoTestCase {
         assertTrue(report.exists());
 
         String htmlContent = FileUtils.fileRead(report);
-        assertTrue(htmlContent.contains("<h2><a name=\"Acceptance_Test\"></a>Acceptance Test</h2></section>"));
+        assertThat(
+                htmlContent,
+                containsString(toSystemNewLine("<section><a id=\"Acceptance_Test\"></a>\n<h1>Acceptance Test</h1>")));
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/AnchorTestCasesStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/AnchorTestCasesStub.java
index 1e4a58d6e..3b69f4ba8 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/AnchorTestCasesStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class AnchorTestCasesStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "basic-surefire-report-anchor-test-cases";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java
index 1e4a58d6e..bdcce6b04 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class EnclosedStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "surefire-report-enclosed";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java
index 1e4a58d6e..f5ba0e74b 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/EnclosedTrimStackTraceStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class EnclosedTrimStackTraceStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "surefire-report-enclosed-trimStackTrace";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/LinkXrefFalseStub.java
similarity index 68%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/LinkXrefFalseStub.java
index 1e4a58d6e..7bf7cf44b 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/LinkXrefFalseStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class LinkXrefFalseStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "basic-surefire-report-linkxref-false";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java
index 1e4a58d6e..6f1547b37 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class NestedClassStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "surefire-report-nestedClass";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java
index 1e4a58d6e..1a30076f5 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/NestedClassTrimStackTraceStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class NestedClassTrimStackTraceStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "surefire-report-nestedClass-trimStackTrace";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/ReportTestStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/ReportTestStub.java
index 1e4a58d6e..d04125a72 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/ReportTestStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class ReportTestStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "basic-surefire-report-test";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/ReportingNullStub.java
similarity index 86%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/ReportingNullStub.java
index 1e4a58d6e..86b557ab0 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/ReportingNullStub.java
@@ -22,12 +22,11 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
 
 /**
  * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
  */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
+public class ReportingNullStub extends SurefireReportMavenProjectStub {
     /**
      * {@inheritDoc}
      */
@@ -35,4 +34,9 @@ public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
     public List<ReportPlugin> getReportPlugins() {
         return new ArrayList<>();
     }
+
+    @Override
+    protected String getProjectDirName() {
+        return "basic-surefire-report-reporting-null";
+    }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java
index 1e4a58d6e..60e83182e 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SingleErrorStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class SingleErrorStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "surefire-report-single-error";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SuccessFalseStub.java
similarity index 67%
copy from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
copy to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SuccessFalseStub.java
index 1e4a58d6e..afe355951 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SuccessFalseStub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class SuccessFalseStub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "basic-surefire-report-success-false";
     }
 }
diff --git a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/Surefire1183Stub.java
similarity index 67%
rename from maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
rename to maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/Surefire1183Stub.java
index 1e4a58d6e..e39849618 100644
--- a/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/SurefireReportMavenProjectStub2.java
+++ b/maven-surefire-report-plugin/src/test/java/org/apache/maven/plugins/surefire/report/stubs/Surefire1183Stub.java
@@ -18,21 +18,10 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
-import java.util.ArrayList;
-import java.util.List;
+public class Surefire1183Stub extends SurefireReportMavenProjectStub {
 
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
-
-/**
- * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
- */
-public class SurefireReportMavenProjectStub2 extends MavenProjectStub {
-    /**
-     * {@inheritDoc}
-     */
     @Override
-    public List<ReportPlugin> getReportPlugins() {
-        return new ArrayList<>();
+    protected String getProjectDirName() {
+        return "surefire-1183";
     }
 }
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 de27f52f8..952b6ff39 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
@@ -18,22 +18,35 @@
  */
 package org.apache.maven.plugins.surefire.report.stubs;
 
+import java.io.File;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.maven.RepositoryUtils;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.MavenArtifactRepository;
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.model.Reporting;
 import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
+import org.eclipse.aether.repository.RemoteRepository;
 
 /**
  * @author <a href="mailto:aramirez@apache.org">Allan Ramirez</a>
  */
-public class SurefireReportMavenProjectStub extends MavenProjectStub {
+public abstract class SurefireReportMavenProjectStub extends MavenProjectStub {
+
+    protected abstract String getProjectDirName();
+
+    @Override
+    public File getBasedir() {
+        return new File(super.getBasedir() + "/src/test/resources/unit/" + getProjectDirName());
+    }
+
+    @Override
+    public File getFile() {
+        return new File(getBasedir(), "plugin-config.xml");
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -47,10 +60,6 @@ public class SurefireReportMavenProjectStub extends MavenProjectStub {
         reportPlugin.setVersion("2.0-SNAPSHOT");
         reporting.addPlugin(reportPlugin);
 
-        Model model = new Model();
-
-        model.setReporting(reporting);
-
         return reporting.getPlugins();
     }
 
@@ -65,4 +74,9 @@ public class SurefireReportMavenProjectStub extends MavenProjectStub {
 
         return Collections.singletonList(repository);
     }
+
+    @Override
+    public List<RemoteRepository> getRemoteProjectRepositories() {
+        return RepositoryUtils.toRepos(getRemoteArtifactRepositories());
+    }
 }
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 de261c2f9..fe0e78d7f 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/basic-surefire-report-anchor-test-cases</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.AnchorTestCasesStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/basic-surefire-report-anchor-test-cases/surefire-reports
           </reportsDirectory>
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 636d7c296..01f10b34a 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/basic-surefire-report-linkxref-false</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.LinkXrefFalseStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/basic-surefire-report-linkxref-false/surefire-reports
           </reportsDirectory>
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 961cf3757..f53e5dfea 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/basic-surefire-report-reporting-null</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub2"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.ReportingNullStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/basic-surefire-report-reporting-null/surefire-reports
           </reportsDirectory>
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 8301318ff..27d6b2e38 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/basic-surefire-report-success-false</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SuccessFalseStub"/>
           <showSuccess>false</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/basic-surefire-report-success-false/surefire-reports
           </reportsDirectory>
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 808387752..782c972c8 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/basic-surefire-report-test</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.ReportTestStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/basic-surefire-report-test/surefire-reports
           </reportsDirectory>
diff --git a/maven-surefire-report-plugin/src/test/resources/unit/surefire-1183/plugin-config.xml b/maven-surefire-report-plugin/src/test/resources/unit/surefire-1183/plugin-config.xml
index eea0ee279..5d58bfc1b 100644
--- a/maven-surefire-report-plugin/src/test/resources/unit/surefire-1183/plugin-config.xml
+++ b/maven-surefire-report-plugin/src/test/resources/unit/surefire-1183/plugin-config.xml
@@ -18,21 +18,18 @@
   -->
 
 <project>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-surefire-report-plugin</artifactId>
-                <configuration>
-                    <project
-                            implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
-                    <outputName>acceptance-test-report</outputName>
-                    <localRepository>${localRepository}</localRepository>
-                    <customBundle>${basedir}/src/test/resources/unit/surefire-1183/src/site/custom/surefire-report.properties</customBundle>
-                    <outputDirectory>${basedir}/target/site/unit/surefire-1183</outputDirectory>
-                    <reportsDirectory>${basedir}/src/test/resources/unit/surefire-1183/acceptancetest-reports</reportsDirectory>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-report-plugin</artifactId>
+        <configuration>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.Surefire1183Stub"/>
+          <outputName>acceptance-test-report</outputName>
+          <customBundle>${basedir}/src/test/resources/unit/surefire-1183/src/site/custom/surefire-report.properties</customBundle>
+          <outputDirectory>${basedir}/target/site/unit/surefire-1183</outputDirectory>
+          <reportsDirectory>${basedir}/src/test/resources/unit/surefire-1183/acceptancetest-reports</reportsDirectory>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
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 86d893d69..d02fe60da 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/surefire-report-enclosed-trimStackTrace</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.EnclosedTrimStackTraceStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/surefire-report-enclosed-trimStackTrace/surefire-reports
           </reportsDirectory>
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 2ee7e9fe5..5bb6b5ab6 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/surefire-report-enclosed</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.EnclosedStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/surefire-report-enclosed/surefire-reports
           </reportsDirectory>
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 ac3ee5db9..7e6c0a506 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/surefire-report-nestedClass-trimStackTrace</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.NestedClassTrimStackTraceStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/surefire-report-nestedClass-trimStackTrace/surefire-reports
           </reportsDirectory>
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 49cd79b7b..5b577227c 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/surefire-report-nestedClass</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.NestedClassStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/surefire-report-nestedClass/surefire-reports
           </reportsDirectory>
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 4dad64907..cfb5505a2 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
@@ -24,8 +24,7 @@
         <artifactId>maven-surefire-report-plugin</artifactId>
         <configuration>
           <outputDirectory>${basedir}/target/site/unit/surefire-report-single-error</outputDirectory>
-          <localRepository>${localRepository}</localRepository>
-          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SurefireReportMavenProjectStub"/>
+          <project implementation="org.apache.maven.plugins.surefire.report.stubs.SingleErrorStub"/>
           <showSuccess>true</showSuccess>
           <reportsDirectory>${basedir}/src/test/resources/unit/surefire-report-single-error/surefire-reports
           </reportsDirectory>
diff --git a/pom.xml b/pom.xml
index b8c85c822..9f0019427 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,11 +124,6 @@
         <artifactId>commons-io</artifactId>
         <version>${commonsIoVersion}</version>
       </dependency>
-      <dependency>
-        <groupId>org.apache.maven.reporting</groupId>
-        <artifactId>maven-reporting-api</artifactId>
-        <version>3.1.1</version>
-      </dependency>
       <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-core</artifactId>
@@ -168,22 +163,6 @@
         <version>${mavenSharedUtilsVersion}</version>
       </dependency>
       <dependency>
-        <groupId>org.apache.maven.reporting</groupId>
-        <artifactId>maven-reporting-impl</artifactId>
-        <version>3.2.0</version>
-        <exclusions>
-          <exclusion>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-core</artifactId>
-          </exclusion>
-          <exclusion>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
-      <dependency>
-        <!-- Do not upgrade, leads to test failures, needs analysis -->
         <groupId>org.apache.maven.shared</groupId>
         <artifactId>maven-common-artifact-filters</artifactId>
         <version>3.1.1</version>
diff --git a/surefire-its/src/test/resources/surefire-260-testWithIdenticalNames/pom.xml b/surefire-its/src/test/resources/surefire-260-testWithIdenticalNames/pom.xml
index 4aa101ba5..2a0af56a9 100644
--- a/surefire-its/src/test/resources/surefire-260-testWithIdenticalNames/pom.xml
+++ b/surefire-its/src/test/resources/surefire-260-testWithIdenticalNames/pom.xml
@@ -57,7 +57,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-site-plugin</artifactId>
-                <version>3.7.1</version>
+                <version>4.0.0-M13</version>
             </plugin>
         </plugins>
     </build>
@@ -67,7 +67,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-project-info-reports-plugin</artifactId>
-                <version>3.0.0</version>
+                <version>4.0.0-M1-SNAPSHOT</version>
                 <configuration>
                     <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
                 </configuration>