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