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