1 package org.apache.maven.shared.release.phase;
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.isA;
23 import static org.mockito.Mockito.mock;
24 import static org.mockito.Mockito.verify;
25 import static org.mockito.Mockito.verifyNoMoreInteractions;
26 import static org.mockito.Mockito.when;
27
28 import java.util.List;
29
30 import org.apache.maven.project.MavenProject;
31 import org.apache.maven.scm.ScmException;
32 import org.apache.maven.scm.ScmFileSet;
33 import org.apache.maven.scm.command.edit.EditScmResult;
34 import org.apache.maven.scm.manager.ScmManagerStub;
35 import org.apache.maven.scm.provider.ScmProvider;
36 import org.apache.maven.scm.provider.ScmProviderStub;
37 import org.apache.maven.scm.repository.ScmRepository;
38 import org.apache.maven.shared.release.ReleaseExecutionException;
39 import org.apache.maven.shared.release.ReleaseFailureException;
40 import org.apache.maven.shared.release.config.ReleaseDescriptor;
41 import org.apache.maven.shared.release.env.DefaultReleaseEnvironment;
42 import org.apache.maven.shared.release.scm.DefaultScmRepositoryConfigurator;
43 import org.apache.maven.shared.release.scm.ReleaseScmCommandException;
44 import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator;
45
46
47
48
49
50
51 public abstract class AbstractEditModeRewritingReleasePhaseTestCase
52 extends AbstractRewritingReleasePhaseTestCase
53 {
54 public void testRewriteBasicPomWithEditMode()
55 throws Exception
56 {
57 List<MavenProject> reactorProjects = createReactorProjectsFromBasicPom();
58 ReleaseDescriptor config = createDescriptorFromBasicPom( reactorProjects );
59 config.setScmUseEditMode( true );
60 mapNextVersion( config, "groupId:artifactId" );
61
62 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
63
64 assertTrue( comparePomFiles( reactorProjects ) );
65 }
66
67 public void testRewriteBasicPomWithEditModeFailure()
68 throws Exception
69 {
70 List<MavenProject> reactorProjects = createReactorProjectsFromBasicPom();
71 ReleaseDescriptor config = createDescriptorFromBasicPom( reactorProjects );
72 config.setScmUseEditMode( true );
73 mapNextVersion( config, "groupId:artifactId" );
74
75 ScmManagerStub scmManager = new ScmManagerStub();
76 DefaultScmRepositoryConfigurator configurator =
77 (DefaultScmRepositoryConfigurator) lookup( ScmRepositoryConfigurator.ROLE );
78 configurator.setScmManager( scmManager );
79
80 ScmProviderStub providerStub = (ScmProviderStub) scmManager.getProviderByUrl( config.getScmSourceUrl() );
81 providerStub.setEditScmResult( new EditScmResult( "", "", "", false ) );
82
83 try
84 {
85 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
86
87 fail( "Should have thrown an exception" );
88 }
89 catch ( ReleaseScmCommandException e )
90 {
91 assertNull( "Check no other cause", e.getCause() );
92 }
93 }
94
95 public void testRewriteBasicPomWithEditModeException()
96 throws Exception
97 {
98
99 List<MavenProject> reactorProjects = createReactorProjectsFromBasicPom();
100 ReleaseDescriptor config = createDescriptorFromBasicPom( reactorProjects );
101 config.setScmUseEditMode( true );
102 mapNextVersion( config, "groupId:artifactId" );
103
104 ScmProvider scmProviderMock = mock( ScmProvider.class );
105 when( scmProviderMock.edit( isA( ScmRepository.class ), isA( ScmFileSet.class) ) ).thenThrow( new ScmException( "..." ) );
106
107 ScmManagerStub scmManager = new ScmManagerStub();
108 DefaultScmRepositoryConfigurator configurator =
109 (DefaultScmRepositoryConfigurator) lookup( ScmRepositoryConfigurator.ROLE );
110 configurator.setScmManager( scmManager );
111 scmManager.setScmProvider( scmProviderMock );
112
113
114 try
115 {
116 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
117
118 fail( "Should have thrown an exception" );
119 }
120 catch ( ReleaseExecutionException e )
121 {
122 assertEquals( "Check cause", ScmException.class, e.getCause().getClass() );
123 }
124
125 verify( scmProviderMock ).edit( isA( ScmRepository.class ), isA( ScmFileSet.class ) );
126 verifyNoMoreInteractions( scmProviderMock );
127 }
128
129 public void testRewritePomPluginDependencies()
130 throws Exception
131 {
132 List<MavenProject> reactorProjects = createReactorProjects( "internal-snapshot-plugin-deps" );
133 ReleaseDescriptor config = createDefaultConfiguration( reactorProjects );
134
135 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
136
137 assertTrue( comparePomFiles( reactorProjects ) );
138 }
139
140 public void testRewritePomUnmappedPluginDependencies()
141 throws Exception
142 {
143 List<MavenProject> reactorProjects = createReactorProjects( "internal-snapshot-plugin-deps" );
144 ReleaseDescriptor config = createUnmappedConfiguration( reactorProjects );
145
146 try
147 {
148 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
149
150 fail( "Should have thrown an exception" );
151 }
152 catch ( ReleaseFailureException e )
153 {
154 assertTrue( true );
155 }
156 }
157
158 public void testRewritePomProfile()
159 throws Exception
160 {
161 List<MavenProject> reactorProjects = createReactorProjects( "internal-snapshot-profile" );
162 ReleaseDescriptor config = createDefaultConfiguration( reactorProjects );
163
164 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
165
166 assertTrue( comparePomFiles( reactorProjects ) );
167 }
168
169 public void testRewritePomUnmappedProfile()
170 throws Exception
171 {
172 List<MavenProject> reactorProjects = createReactorProjects( "internal-snapshot-profile" );
173 ReleaseDescriptor config = createUnmappedConfiguration( reactorProjects );
174
175 try
176 {
177 phase.execute( config, new DefaultReleaseEnvironment(), reactorProjects );
178
179 fail( "Should have thrown an exception" );
180 }
181 catch ( ReleaseFailureException e )
182 {
183 assertTrue( true );
184 }
185 }
186
187 }