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

sparsick pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-changes-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new b8407d0  chore: Migration AbstractMojoTestCase based tests to use 
MojoTest (#617)
b8407d0 is described below

commit b8407d0c08312b9155cd1e5301e02879d5968f06
Author: Sandra Parsick <[email protected]>
AuthorDate: Wed Dec 17 10:16:09 2025 +0000

    chore: Migration AbstractMojoTestCase based tests to use MojoTest (#617)
    
    * chore: migrate AbstractMojoTestCase based test to use MojoTest
    
    Signed-off-by: Sandra Parsick <[email protected]>
---
 pom.xml                                            |   2 +-
 .../plugins/changes/ChangesValidatorMojoTest.java  |  49 +++++-----
 .../changes/announcement/AnnouncementMojoTest.java |  72 +++++++--------
 .../changes/jira/JiraChangesReportTest.java        |  13 +--
 .../plugins/changes/jira/JiraUnicodeTestCase.java  | 100 +++++++++++----------
 5 files changed, 115 insertions(+), 121 deletions(-)

diff --git a/pom.xml b/pom.xml
index 27e0783..b60a473 100644
--- a/pom.xml
+++ b/pom.xml
@@ -331,7 +331,7 @@ under the License.
     <dependency>
       <groupId>org.apache.maven.plugin-testing</groupId>
       <artifactId>maven-plugin-testing-harness</artifactId>
-      <version>4.0.0-alpha-2</version>
+      <version>3.4.0</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git 
a/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java 
b/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
index 9603938..7bc3030 100644
--- 
a/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
+++ 
b/src/test/java/org/apache/maven/plugins/changes/ChangesValidatorMojoTest.java
@@ -18,11 +18,10 @@
  */
 package org.apache.maven.plugins.changes;
 
-import java.io.File;
-
+import org.apache.maven.api.plugin.testing.InjectMojo;
+import org.apache.maven.api.plugin.testing.MojoParameter;
+import org.apache.maven.api.plugin.testing.MojoTest;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.testing.AbstractMojoTestCase;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.fail;
@@ -32,32 +31,24 @@ import static org.junit.jupiter.api.Assertions.fail;
  * @since 29 juil. 2008
  * @version $Id$
  */
-public class ChangesValidatorMojoTest extends AbstractMojoTestCase {
-
-    protected ChangesValidatorMojo mojo;
-
-    @BeforeEach
-    public void setUp() throws Exception {
-        super.setUp();
-        File pom = new File(getBasedir(), "/src/test/unit/plugin-config.xml");
-        mojo = lookupMojo("changes-validate", pom);
-    }
+@MojoTest
+public class ChangesValidatorMojoTest {
 
+    @InjectMojo(goal = "changes-validate", pom = 
"src/test/unit/plugin-config.xml")
+    @MojoParameter(name = "changesXsdVersion", value = "2.0.0")
+    @MojoParameter(name = "xmlPath", value = "src/test/unit/changes.xml")
+    @MojoParameter(name = "failOnError", value = "true")
     @Test
-    public void testValidationSuccess() throws Exception {
-        File changesXml = new File(getBasedir(), "/src/test/unit/changes.xml");
-        setVariableValueToObject(mojo, "xmlPath", changesXml);
-        setVariableValueToObject(mojo, "changesXsdVersion", "2.0.0");
-        setVariableValueToObject(mojo, "failOnError", Boolean.TRUE);
+    public void testValidationSuccess(ChangesValidatorMojo mojo) throws 
Exception {
         mojo.execute();
     }
 
+    @InjectMojo(goal = "changes-validate", pom = 
"src/test/unit/plugin-config.xml")
+    @MojoParameter(name = "changesXsdVersion", value = "2.0.0")
+    @MojoParameter(name = "xmlPath", value = 
"src/test/unit/non-valid-changes.xml")
+    @MojoParameter(name = "failOnError", value = "true")
     @Test
-    public void testValidationFailedWithMojoFailure() throws Exception {
-        File changesXml = new File(getBasedir(), 
"/src/test/unit/non-valid-changes.xml");
-        setVariableValueToObject(mojo, "xmlPath", changesXml);
-        setVariableValueToObject(mojo, "changesXsdVersion", "2.0.0");
-        setVariableValueToObject(mojo, "failOnError", Boolean.TRUE);
+    public void testValidationFailedWithMojoFailure(ChangesValidatorMojo mojo) 
throws Exception {
         try {
             mojo.execute();
             fail(" A MojoExecutionException should occur here. Changes file is 
not valid and failOnError is true ");
@@ -66,12 +57,12 @@ public class ChangesValidatorMojoTest extends 
AbstractMojoTestCase {
         }
     }
 
+    @InjectMojo(goal = "changes-validate", pom = 
"src/test/unit/plugin-config.xml")
+    @MojoParameter(name = "changesXsdVersion", value = "1.0.0")
+    @MojoParameter(name = "xmlPath", value = 
"src/test/unit/non-valid-changes.xml")
+    @MojoParameter(name = "failOnError", value = "false")
     @Test
-    public void testValidationFailedWithNoMojoFailure() throws Exception {
-        File changesXml = new File(getBasedir(), 
"/src/test/unit/non-valid-changes.xml");
-        setVariableValueToObject(mojo, "xmlPath", changesXml);
-        setVariableValueToObject(mojo, "changesXsdVersion", "1.0.0");
-        setVariableValueToObject(mojo, "failOnError", Boolean.FALSE);
+    public void testValidationFailedWithNoMojoFailure(ChangesValidatorMojo 
mojo) throws Exception {
         mojo.execute();
     }
 }
diff --git 
a/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
 
b/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
index 55b8bf0..a90bec2 100644
--- 
a/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
+++ 
b/src/test/java/org/apache/maven/plugins/changes/announcement/AnnouncementMojoTest.java
@@ -19,75 +19,67 @@
 package org.apache.maven.plugins.changes.announcement;
 
 import java.io.File;
+import java.io.IOException;
 import java.nio.file.Files;
 
-import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.api.plugin.testing.InjectMojo;
+import org.apache.maven.api.plugin.testing.MojoParameter;
+import org.apache.maven.api.plugin.testing.MojoTest;
 import org.codehaus.plexus.util.FileUtils;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+import static org.apache.maven.api.plugin.testing.MojoExtension.getBasedir;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * @author Olivier Lamy
  * @version $Id$
  */
-public class AnnouncementMojoTest extends AbstractMojoTestCase {
-    @BeforeEach
-    void setup() throws Exception {
-        super.setUp();
-    }
-
+@MojoTest
+public class AnnouncementMojoTest {
+    @InjectMojo(goal = "announcement-generate", pom = 
"src/test/unit/plugin-config.xml")
+    @MojoParameter(name = "xmlPath", value = 
"src/test/unit/announce-changes.xml")
+    @MojoParameter(name = "announcementDirectory", value = "target/test")
+    @MojoParameter(name = "version", value = "1.1")
+    @MojoParameter(name = "template", value = "announcement.vm")
+    @MojoParameter(
+            name = "templateDirectory",
+            value = 
"src/main/resources/org/apache/maven/plugins/changes/announcement/")
+    @MojoParameter(name = "introduction", value = "Nice library")
     @Test
-    public void testAnnounceGeneration() throws Exception {
-        File pom = new File(getBasedir(), "/src/test/unit/plugin-config.xml");
-        AnnouncementMojo mojo = lookupMojo("announcement-generate", pom);
-
-        setVariableValueToObject(mojo, "xmlPath", new File(getBasedir(), 
"/src/test/unit/announce-changes.xml"));
-
-        File announcementDirectory = new File(getBasedir(), "target/test");
-
-        if (announcementDirectory.exists()) {
-            FileUtils.deleteDirectory(announcementDirectory);
-            announcementDirectory.mkdirs();
-        } else {
-            announcementDirectory.mkdirs();
-        }
-        setVariableValueToObject(mojo, "announcementDirectory", 
announcementDirectory);
-        setVariableValueToObject(mojo, "version", "1.1");
-        setVariableValueToObject(mojo, "template", "announcement.vm");
-        setVariableValueToObject(
-                mojo, "templateDirectory", 
"src/main/resources/org/apache/maven/plugins/changes/announcement/");
-        setVariableValueToObject(mojo, "basedir", getBasedir());
-        setVariableValueToObject(mojo, "introduction", "Nice library");
+    public void testAnnounceGeneration(AnnouncementMojo mojo) throws Exception 
{
+        File announcementDirectory = prepareAnnouncementDirectory();
         mojo.execute();
 
         String result =
                 new 
String(Files.readAllBytes(announcementDirectory.toPath().resolve("announcement.vm")));
 
         assertContains("Nice library", result);
-
         assertContains("Changes in this version include:", result);
-
         assertContains("New features:", result);
-
         assertContains("o Added additional documentation on how to configure 
the plugin.", result);
-
         assertContains("Fixed Bugs:", result);
-
         assertContains("o Enable retrieving component-specific issues.  Issue: 
MCHANGES-88.", result);
-
         assertContains("Changes:", result);
-
         assertContains("o Handle different issue systems.", result);
-
         assertContains("o Updated dependencies.", result);
-
         assertContains("Removed:", result);
-
         assertContains("o The element type \" link \" must be terminated by 
the matching end-tag.", result);
-
         assertContains("Deleted the erroneous code.", result);
     }
 
+    private File prepareAnnouncementDirectory() throws IOException {
+        File announcementDirectory = new File(getBasedir(), "target/test");
+
+        if (announcementDirectory.exists()) {
+            FileUtils.deleteDirectory(announcementDirectory);
+            announcementDirectory.mkdirs();
+        } else {
+            announcementDirectory.mkdirs();
+        }
+        return announcementDirectory;
+    }
+
     private static void assertContains(String content, String announce) {
         assertTrue(announce.indexOf(content) > 0);
     }
diff --git 
a/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
 
b/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
index 9491f9a..86567f3 100644
--- 
a/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
+++ 
b/src/test/java/org/apache/maven/plugins/changes/jira/JiraChangesReportTest.java
@@ -18,7 +18,9 @@
  */
 package org.apache.maven.plugins.changes.jira;
 
-import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+import org.apache.maven.api.plugin.testing.InjectMojo;
+import org.apache.maven.api.plugin.testing.MojoParameter;
+import org.apache.maven.api.plugin.testing.MojoTest;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -29,8 +31,8 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
  * @author jrh3k5
  * @since 2.8
  */
-public class JiraChangesReportTest extends AbstractMojoTestCase {
-    private final JiraChangesReport mojo = new JiraChangesReport(null);
+@MojoTest
+public class JiraChangesReportTest {
 
     /**
      * If the mojo has been marked to be skipped, then it should indicate that 
the report cannot be generated.
@@ -38,8 +40,9 @@ public class JiraChangesReportTest extends 
AbstractMojoTestCase {
      * @throws Exception If any errors occur during the test run.
      */
     @Test
-    public void testCanGenerateReportSkipped() throws Exception {
-        setVariableValueToObject(mojo, "skip", Boolean.TRUE);
+    @InjectMojo(goal = "jira-changes")
+    @MojoParameter(name = "skip", value = "true")
+    public void testCanGenerateReportSkipped(JiraChangesReport mojo) {
         assertFalse(mojo.canGenerateReport());
     }
 }
diff --git 
a/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java 
b/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java
index 5cef32b..6b1003e 100644
--- 
a/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java
+++ 
b/src/test/java/org/apache/maven/plugins/changes/jira/JiraUnicodeTestCase.java
@@ -18,25 +18,29 @@
  */
 package org.apache.maven.plugins.changes.jira;
 
+import javax.inject.Inject;
+
 import java.io.File;
 import java.util.Collections;
-import java.util.List;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.maven.api.plugin.testing.InjectMojo;
+import org.apache.maven.api.plugin.testing.MojoParameter;
+import org.apache.maven.api.plugin.testing.MojoTest;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.internal.aether.DefaultRepositorySystemSessionFactory;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.testing.AbstractMojoTestCase;
 import org.apache.maven.plugins.changes.issues.Issue;
 import org.apache.maven.project.MavenProject;
 import org.eclipse.aether.DefaultRepositorySystemSession;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.repository.LocalRepository;
 import org.eclipse.aether.repository.RemoteRepository;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -44,53 +48,66 @@ import static org.mockito.Mockito.when;
 /**
  * @version $Id$
  */
-public class JiraUnicodeTestCase extends AbstractMojoTestCase {
+@MojoTest
+public class JiraUnicodeTestCase {
     /*
      * Something in Doxia escapes all non-Ascii even when the charset is 
UTF-8. This test will fail if that ever
      * changes.
      */
     private static final String TEST_TURTLES = 
"&#x6d77;&#x9f9f;&#x4e00;&#x8def;&#x4e0b;&#x8dcc;&#x3002;";
 
+    /**
+     * The project to test.
+     */
+    @Inject
+    private MavenProject testMavenProject;
+
+    @Inject
+    private MavenSession mavenSession;
+
+    @Inject
+    private DefaultRepositorySystemSessionFactory repoSessionFactory;
+
+    @Inject
+    private MojoExecution mojoExecution;
+
     @BeforeEach
     public void setUp() throws Exception {
-        super.setUp();
-    }
+        // prepare realistic repository session
+        ArtifactRepository localRepo = mock(ArtifactRepository.class);
+        when(localRepo.getBasedir()).thenReturn(new 
File(System.getProperty("localRepository")).getAbsolutePath());
 
-    @Test
-    public void testUnicodeReport() throws Exception {
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest();
+        request.setLocalRepository(localRepo);
 
-        File pom = new File(getBasedir(), 
"/src/test/unit/jira-plugin-config.xml");
-        assertNotNull(pom);
-        assertTrue(pom.exists());
+        RemoteRepository centralRepo =
+                new RemoteRepository.Builder("central", "default", 
"https://repo.maven.apache.org/maven2";).build();
 
-        JiraChangesReport mojo = lookupMojo("jira-changes", pom);
-        MavenProject project = new JiraUnicodeTestProjectStub();
-        MavenSession session = newMavenSession(project);
-
-        RepositorySystem repositorySystem = lookup(RepositorySystem.class);
+        DefaultRepositorySystemSession systemSession = 
repoSessionFactory.newRepositorySession(request);
+        when(mavenSession.getRepositorySession()).thenReturn(systemSession);
+        
when(testMavenProject.getRemoteProjectRepositories()).thenReturn(Collections.singletonList(centralRepo));
+        when(mojoExecution.getPlugin()).thenReturn(new Plugin());
+    }
 
-        DefaultRepositorySystemSession repositorySystemSession =
-                (DefaultRepositorySystemSession) 
session.getRepositorySession();
-        
repositorySystemSession.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(
-                repositorySystemSession, new 
LocalRepository(System.getProperty("localRepository"))));
+    @InjectMojo(goal = "jira-changes", pom = 
"src/test/unit/jira-plugin-config.xml")
+    @MojoParameter(name = "siteDirectory", value = "non-existing")
+    @Test
+    public void testUnicodeReport(JiraChangesReport mojo) throws Exception {
+        RestJiraDownloader mock = mock(RestJiraDownloader.class);
+        
when(mock.getIssueList()).thenReturn(Collections.singletonList(testIssue()));
+        mojo.setMockDownloader(mock);
 
-        // Test need to download a maven-fluido-skin if not present in local 
repo
-        List<RemoteRepository> remoteRepositories = 
repositorySystem.newResolutionRepositories(
-                repositorySystemSession,
-                Collections.singletonList(
-                        new RemoteRepository.Builder("central", "default", 
"https://repo.maven.apache.org/maven2";)
-                                .build()));
+        File outputDir = new File("target/jira-test-output");
+        mojo.setReportOutputDirectory(outputDir);
 
-        setVariableValueToObject(mojo, "project", project);
-        setVariableValueToObject(mojo, "reactorProjects", 
Collections.singletonList(project));
-        setVariableValueToObject(mojo, "repoSession", repositorySystemSession);
-        setVariableValueToObject(mojo, "remoteProjectRepositories", 
remoteRepositories);
+        mojo.execute();
 
-        setVariableValueToObject(mojo, "siteDirectory", new 
File("non-existing"));
-        setVariableValueToObject(mojo, "mavenSession", session);
-        setVariableValueToObject(mojo, "mojoExecution", new MojoExecution(new 
Plugin(), "jira-changes", "default"));
+        String reportHtml = FileUtils.readFileToString(new File(outputDir, 
"jira-changes.html"), "utf-8");
+        int turtleIndex = reportHtml.indexOf(TEST_TURTLES);
+        assertTrue(turtleIndex >= 0);
+    }
 
-        RestJiraDownloader mock = mock(RestJiraDownloader.class);
+    private Issue testIssue() {
         Issue issue = new Issue();
         issue.setKey("PCSUNIT-2");
         issue.setLink("http://pcsjira.slg.gr/browse/PCSUNIT-2";);
@@ -98,15 +115,6 @@ public class JiraUnicodeTestCase extends 
AbstractMojoTestCase {
         issue.setStatus("Closed");
         issue.setResolution("Fixed");
         issue.setAssignee("Nikolaos Stais");
-        when(mock.getIssueList()).thenReturn(Collections.singletonList(issue));
-
-        mojo.setMockDownloader(mock);
-        File outputDir = new File("target/jira-test-output");
-        outputDir.mkdirs();
-        mojo.setReportOutputDirectory(outputDir);
-        mojo.execute();
-        String reportHtml = FileUtils.readFileToString(new File(outputDir, 
"jira-changes.html"), "utf-8");
-        int turtleIndex = reportHtml.indexOf(TEST_TURTLES);
-        assertTrue(turtleIndex >= 0);
+        return issue;
     }
 }

Reply via email to