1 package org.apache.maven.plugins.assembly.archive.task.testutils;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import junit.framework.Assert;
23 import org.apache.maven.artifact.Artifact;
24 import org.apache.maven.artifact.repository.ArtifactRepository;
25 import org.apache.maven.execution.MavenSession;
26 import org.apache.maven.model.building.ModelProblem;
27 import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
28 import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
29 import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
30 import org.apache.maven.plugins.assembly.model.Assembly;
31 import org.apache.maven.plugins.assembly.model.DependencySet;
32 import org.apache.maven.project.DependencyResolutionResult;
33 import org.apache.maven.project.MavenProject;
34 import org.apache.maven.project.ProjectBuilder;
35 import org.apache.maven.project.ProjectBuildingException;
36 import org.apache.maven.project.ProjectBuildingRequest;
37 import org.apache.maven.project.ProjectBuildingResult;
38 import org.codehaus.plexus.archiver.ArchivedFileSet;
39 import org.codehaus.plexus.archiver.Archiver;
40 import org.codehaus.plexus.archiver.ArchiverException;
41 import org.codehaus.plexus.archiver.manager.ArchiverManager;
42 import org.easymock.EasyMock;
43 import org.easymock.classextension.EasyMockSupport;
44
45 import java.io.File;
46 import java.nio.charset.Charset;
47 import java.util.LinkedHashMap;
48 import java.util.List;
49 import java.util.Properties;
50 import java.util.Set;
51
52 import static org.easymock.EasyMock.anyInt;
53 import static org.easymock.EasyMock.anyObject;
54 import static org.easymock.EasyMock.expect;
55
56 public class MockAndControlForAddDependencySetsTask
57 {
58
59 public final Archiver archiver;
60
61 public final AssemblerConfigurationSource configSource;
62
63 public final ProjectBuilder projectBuilder;
64
65 public final ArchiverManager archiverManager;
66
67 public final DependencyResolver dependencyResolver;
68
69 private final MavenProject project;
70
71 private final MavenSession session;
72
73 private final ProjectBuildingRequest projectBuildingRequest;
74
75 public MockAndControlForAddDependencySetsTask( final EasyMockSupport mockManager )
76 {
77 this( mockManager, null );
78 }
79
80 public MockAndControlForAddDependencySetsTask( final EasyMockSupport mockManager, final MavenProject project )
81 {
82 this.project = project;
83
84 this.session = mockManager.createMock( MavenSession.class );
85
86 this.projectBuildingRequest = mockManager.createMock( ProjectBuildingRequest.class );
87
88 archiver = mockManager.createMock( Archiver.class );
89
90 configSource = mockManager.createMock( AssemblerConfigurationSource.class );
91
92 projectBuilder = mockManager.createMock( ProjectBuilder.class );
93
94 archiverManager = mockManager.createMock( ArchiverManager.class );
95
96 dependencyResolver = mockManager.createMock( DependencyResolver.class );
97
98 enableDefaultExpectations();
99 }
100
101 private void enableDefaultExpectations()
102 {
103 expect( configSource.getProject() ).andReturn( project ).anyTimes();
104 expect( session.getProjectBuildingRequest() ).andReturn( projectBuildingRequest ).anyTimes();
105 expect( session.getSystemProperties() ).andReturn( new Properties() ).anyTimes();
106 expect( session.getUserProperties() ).andReturn( new Properties() ).anyTimes();
107 expect( session.getExecutionProperties() ).andReturn( new Properties() ).anyTimes();
108
109 expectGetSession( session );
110 }
111
112 public void expectAddArchivedFileSet()
113 {
114 try
115 {
116 archiver.addArchivedFileSet( (File) anyObject(), (String) anyObject(), (String[]) anyObject(),
117 (String[]) anyObject() );
118 EasyMock.expectLastCall().anyTimes();
119 archiver.addArchivedFileSet( (ArchivedFileSet) anyObject(), (Charset) anyObject() );
120 EasyMock.expectLastCall().anyTimes();
121
122 }
123 catch ( final ArchiverException e )
124 {
125 Assert.fail( "Should never happen." );
126 }
127 }
128
129 public void expectModeChange( final int originalDirMode, final int originalFileMode, final int dirMode,
130 final int fileMode, final int numberOfChanges )
131 {
132 expectGetMode( originalDirMode, originalFileMode );
133
134 if ( numberOfChanges > 1 )
135 {
136 for ( int i = 1; i < numberOfChanges; i++ )
137 {
138 archiver.setDirectoryMode( dirMode );
139 archiver.setFileMode( fileMode );
140 }
141 }
142
143 archiver.setDirectoryMode( originalDirMode );
144 archiver.setFileMode( originalFileMode );
145 }
146
147 public void expectGetMode( final int originalDirMode, final int originalFileMode )
148 {
149 archiver.setFileMode( anyInt() );
150 EasyMock.expectLastCall().anyTimes();
151 expect( archiver.getOverrideDirectoryMode() ).andReturn( originalDirMode );
152 expect( archiver.getOverrideFileMode() ).andReturn( originalFileMode );
153 archiver.setDirectoryMode( anyInt() );
154 EasyMock.expectLastCall().anyTimes();
155
156 }
157
158 public void expectAddFile( final File file, final String outputLocation )
159 {
160 try
161 {
162 archiver.addFile( file, outputLocation );
163 }
164 catch ( final ArchiverException e )
165 {
166 Assert.fail( "Should never happen." );
167 }
168 }
169
170 public void expectAddFile( final File file, final String outputLocation, final int fileMode )
171 {
172 try
173 {
174 archiver.addFile( file, outputLocation, fileMode );
175 }
176 catch ( final ArchiverException e )
177 {
178 Assert.fail( "Should never happen." );
179 }
180 }
181
182 public void expectAddAnyFile()
183 {
184 try
185 {
186 archiver.addFile( (File) anyObject(), (String) anyObject(), anyInt() );
187 }
188 catch ( final ArchiverException e )
189 {
190 Assert.fail( "Should never happen." );
191 }
192 }
193
194 public void expectGetReactorProjects( final List<MavenProject> projects )
195 {
196 expect( configSource.getReactorProjects() ).andReturn( projects ).anyTimes();
197 }
198
199 public void expectCSGetFinalName( final String finalName )
200 {
201 expect( configSource.getFinalName() ).andReturn( finalName ).anyTimes();
202 }
203
204 public void expectGetDestFile( final File destFile )
205 {
206 expect( archiver.getDestFile() ).andReturn( destFile ).anyTimes();
207 }
208
209 public void expectCSGetRepositories( final ArtifactRepository localRepo,
210 final List<ArtifactRepository> remoteRepos )
211 {
212 expect( configSource.getLocalRepository() ).andReturn( localRepo ).anyTimes();
213 expect( configSource.getRemoteRepositories() ).andReturn( remoteRepos ).anyTimes();
214 }
215
216 public void expectBuildFromRepository( final ProjectBuildingException error )
217 {
218 try
219 {
220 expect( projectBuilder.build( (Artifact) anyObject(), (ProjectBuildingRequest) anyObject() ) ).andThrow(
221 error );
222
223 }
224 catch ( final ProjectBuildingException e )
225 {
226 Assert.fail( "should never happen" );
227 }
228 }
229
230 public void expectBuildFromRepository( final MavenProject project )
231 {
232 ProjectBuildingResult pbr = new ProjectBuildingResult()
233 {
234 @Override
235 public String getProjectId()
236 {
237 return null;
238 }
239
240 @Override
241 public File getPomFile()
242 {
243 return null;
244 }
245
246 @Override
247 public MavenProject getProject()
248 {
249 return project;
250 }
251
252 @Override
253 public List<ModelProblem> getProblems()
254 {
255 return null;
256 }
257
258 @Override
259 public DependencyResolutionResult getDependencyResolutionResult()
260 {
261 return null;
262 }
263 };
264
265 try
266 {
267 expect( projectBuilder.build( (Artifact) anyObject(), (ProjectBuildingRequest) anyObject() ) ).andReturn(
268 pbr ).anyTimes();
269 }
270 catch ( final ProjectBuildingException e )
271 {
272 Assert.fail( "should never happen" );
273 }
274 }
275
276 public void expectGetSession( final MavenSession session )
277 {
278 expect( configSource.getMavenSession() ).andReturn( session ).anyTimes();
279 }
280
281 public void expectResolveDependencySets()
282 throws DependencyResolutionException
283 {
284 expect( dependencyResolver.resolveDependencySets( (Assembly) anyObject(),
285 (AssemblerConfigurationSource) anyObject(),
286 (List<DependencySet>) anyObject() ) ).andReturn(
287 new LinkedHashMap<DependencySet, Set<Artifact>>() ).anyTimes();
288
289 }
290
291
292 }