Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,8 @@ 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>
<!-- TODO check 4.0.0-alpha-2-->
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 ");
Expand All @@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -29,17 +31,18 @@
* @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.
*
* @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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,95 +18,103 @@
*/
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;

/**
* @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");
issue.setSummary("海龟一路下跌。 Απεικόνιση σε EXCEL των data των φορμών. Περίπτωση με πολλά blocks");
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;
}
}
Loading