1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.release;
20
21 import java.io.File;
22
23 import org.apache.maven.model.DistributionManagement;
24 import org.apache.maven.model.Site;
25 import org.apache.maven.plugin.testing.AbstractMojoTestCase;
26 import org.apache.maven.project.MavenProject;
27 import org.apache.maven.shared.release.ReleaseManager;
28 import org.apache.maven.shared.release.ReleasePerformRequest;
29 import org.apache.maven.shared.release.config.ReleaseDescriptorBuilder;
30 import org.mockito.ArgumentCaptor;
31
32 import static org.mockito.Mockito.mock;
33 import static org.mockito.Mockito.verify;
34 import static org.mockito.Mockito.verifyNoMoreInteractions;
35
36
37
38
39
40
41 public class StageReleaseMojoTest extends AbstractMojoTestCase {
42 private File workingDirectory;
43
44 public void testStage() throws Exception {
45 StageReleaseMojo mojo = getMojoWithProjectSite("stage.xml");
46
47 ReleaseDescriptorBuilder builder = new ReleaseDescriptorBuilder();
48 builder.setWorkingDirectory(workingDirectory.getAbsolutePath());
49 File checkoutDirectory = getTestFile("target/checkout");
50 builder.setCheckoutDirectory(checkoutDirectory.getAbsolutePath());
51 builder.setPerformGoals("deploy site:stage-deploy");
52 builder.setAdditionalArguments("-DaltDeploymentRepository=\"staging\"");
53
54 ReleasePerformRequest performRequest = new ReleasePerformRequest();
55 performRequest.setReleaseDescriptorBuilder(builder);
56 performRequest.setReleaseEnvironment(mojo.getReleaseEnvironment());
57 performRequest.setReactorProjects(mojo.getReactorProjects());
58 performRequest.setDryRun(false);
59
60 ReleaseManager mock = mock(ReleaseManager.class);
61 mojo.setReleaseManager(mock);
62
63 mojo.execute();
64
65
66 ArgumentCaptor<ReleasePerformRequest> argument = ArgumentCaptor.forClass(ReleasePerformRequest.class);
67 verify(mock).perform(argument.capture());
68 assertNotNull(argument.getValue().getReleaseDescriptorBuilder());
69 assertNotNull(argument.getValue().getReleaseEnvironment());
70 assertNotNull(argument.getValue().getReactorProjects());
71 assertEquals(Boolean.FALSE, argument.getValue().getDryRun());
72 verifyNoMoreInteractions(mock);
73 }
74
75 public void testCreateGoals() throws Exception {
76 StageReleaseMojo mojo = getMojoWithProjectSite("stage.xml");
77 mojo.createGoals();
78 assertEquals("deploy site:stage-deploy", mojo.goals);
79 mojo.goals = "deploy site:deploy";
80 mojo.createGoals();
81 assertEquals("deploy site:stage-deploy", mojo.goals);
82 }
83
84 public void testCreateArguments() throws Exception {
85 StageReleaseMojo mojo = getMojoWithProjectSite("stage.xml");
86 mojo.setDeploymentRepository();
87 ReleaseDescriptorBuilder.BuilderReleaseDescriptor releaseDescriptor =
88 mojo.createReleaseDescriptor().build();
89 assertEquals("-DskipTests -DaltDeploymentRepository=\"staging\"", releaseDescriptor.getAdditionalArguments());
90 }
91
92 private StageReleaseMojo getMojoWithProjectSite(String fileName) throws Exception {
93 StageReleaseMojo mojo = (StageReleaseMojo) lookupMojo("stage", new File(workingDirectory, fileName));
94 mojo.setBasedir(workingDirectory);
95 mojo.setPomFileName("pom.xml");
96
97 MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
98 DistributionManagement distributionManagement = new DistributionManagement();
99 distributionManagement.setSite(new Site());
100 project.setDistributionManagement(distributionManagement);
101
102 setVariableValueToObject(mojo, "session", newMavenSession(project));
103
104 return mojo;
105 }
106
107 protected void setUp() throws Exception {
108 super.setUp();
109 workingDirectory = getTestFile("target/test-classes/mojos/stage");
110 }
111 }