diff --git a/pom.xml b/pom.xml
index cd63b9a9..73d8cba9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -331,7 +331,8 @@ under the License.
org.apache.maven.plugin-testing
maven-plugin-testing-harness
- 4.0.0-alpha-2
+ 3.4.0
+
test
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 9603938c..7bc3030d 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 @@
* @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 void testValidationFailedWithMojoFailure() throws Exception {
}
}
+ @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 55b8bf09..a90bec28 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 9491f9a9..86567f3b 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 @@
* @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 5cef32ba..6b1003e7 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 @@
/**
* @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 = "海龟一路下跌。";
+ /**
+ * 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 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 void testUnicodeReport() throws Exception {
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;
}
}