1 package org.apache.maven.plugin.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 java.io.File;
23 import java.nio.charset.Charset;
24 import java.util.LinkedHashMap;
25 import java.util.List;
26 import java.util.Set;
27
28 import junit.framework.Assert;
29
30 import org.apache.maven.artifact.Artifact;
31 import org.apache.maven.artifact.repository.ArtifactRepository;
32 import org.apache.maven.execution.MavenSession;
33 import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
34 import org.apache.maven.plugin.assembly.artifact.DependencyResolutionException;
35 import org.apache.maven.plugin.assembly.artifact.DependencyResolver;
36 import org.apache.maven.plugin.assembly.model.Assembly;
37 import org.apache.maven.plugin.assembly.model.DependencySet;
38 import org.apache.maven.project.MavenProject;
39 import org.apache.maven.project.MavenProjectBuilder;
40 import org.apache.maven.project.ProjectBuildingException;
41 import org.codehaus.plexus.archiver.ArchivedFileSet;
42 import org.codehaus.plexus.archiver.Archiver;
43 import org.codehaus.plexus.archiver.ArchiverException;
44 import org.codehaus.plexus.archiver.manager.ArchiverManager;
45 import org.easymock.EasyMock;
46 import org.easymock.classextension.EasyMockSupport;
47
48 import static org.easymock.EasyMock.anyInt;
49 import static org.easymock.EasyMock.anyObject;
50 import static org.easymock.EasyMock.expect;
51
52 public class MockAndControlForAddDependencySetsTask
53 {
54
55 public final Archiver archiver;
56
57 public final AssemblerConfigurationSource configSource;
58
59 public final MavenProjectBuilder projectBuilder;
60
61 public final ArchiverManager archiverManager;
62
63 private final MavenProject project;
64
65 public final DependencyResolver dependencyResolver;
66
67
68 public MockAndControlForAddDependencySetsTask( final EasyMockSupport mockManager )
69 {
70 this( mockManager, null );
71 }
72
73 public MockAndControlForAddDependencySetsTask( final EasyMockSupport mockManager, final MavenProject project )
74 {
75 this.project = project;
76
77 archiver = mockManager.createMock(Archiver.class);
78 configSource = mockManager.createMock (AssemblerConfigurationSource.class);
79
80
81 projectBuilder = mockManager.createMock(MavenProjectBuilder.class);
82
83 archiverManager = mockManager.createMock(ArchiverManager.class);
84
85 dependencyResolver = mockManager.createMock( DependencyResolver.class);
86
87
88 enableDefaultExpectations();
89 }
90
91 private void enableDefaultExpectations()
92 {
93 expect(configSource.getProject()).andReturn( project ).anyTimes();
94 }
95
96 public void expectAddArchivedFileSet()
97 {
98 try
99 {
100 archiver.addArchivedFileSet( (File) anyObject(), (String) anyObject(), (String[]) anyObject(),
101 (String[]) anyObject() );
102 EasyMock.expectLastCall().anyTimes();
103 archiver.addArchivedFileSet( (ArchivedFileSet)anyObject(), (Charset) anyObject() );
104 EasyMock.expectLastCall().anyTimes();
105
106 }
107 catch ( final ArchiverException e )
108 {
109 Assert.fail( "Should never happen." );
110 }
111 }
112
113 public void expectModeChange( final int originalDirMode, final int originalFileMode, final int dirMode,
114 final int fileMode, final int numberOfChanges )
115 {
116 expectGetMode( originalDirMode, originalFileMode );
117
118 if ( numberOfChanges > 1 )
119 {
120 for ( int i = 1; i < numberOfChanges; i++ )
121 {
122 archiver.setDirectoryMode( dirMode );
123 archiver.setFileMode( fileMode );
124 }
125 }
126
127 archiver.setDirectoryMode( originalDirMode );
128 archiver.setFileMode( originalFileMode );
129 }
130
131 public void expectGetMode( final int originalDirMode, final int originalFileMode )
132 {
133 archiver.setFileMode( anyInt() );
134 EasyMock.expectLastCall().anyTimes();
135 expect( archiver.getOverrideDirectoryMode()).andReturn( originalDirMode );
136 expect( archiver.getOverrideFileMode() ).andReturn( originalFileMode );
137 archiver.setDirectoryMode( anyInt() );
138 EasyMock.expectLastCall().anyTimes();
139
140 }
141
142 public void expectAddFile( final File file, final String outputLocation )
143 {
144 try
145 {
146 archiver.addFile( file, outputLocation );
147 }
148 catch ( final ArchiverException e )
149 {
150 Assert.fail( "Should never happen." );
151 }
152 }
153
154 public void expectAddFile( final File file, final String outputLocation, final int fileMode )
155 {
156 try
157 {
158 archiver.addFile( file, outputLocation, fileMode );
159 }
160 catch ( final ArchiverException e )
161 {
162 Assert.fail( "Should never happen." );
163 }
164 }
165
166 public void expectAddAnyFile( )
167 {
168 try
169 {
170 archiver.addFile( (File) anyObject(), (String) anyObject(), anyInt());
171 }
172 catch ( final ArchiverException e )
173 {
174 Assert.fail( "Should never happen." );
175 }
176 }
177
178 public void expectGetReactorProjects( final List<MavenProject> projects )
179 {
180 expect(configSource.getReactorProjects()).andReturn( projects ).anyTimes();
181 }
182
183 public void expectCSGetFinalName( final String finalName )
184 {
185 expect(configSource.getFinalName()).andReturn( finalName ).anyTimes();
186 }
187
188 public void expectGetDestFile( final File destFile )
189 {
190 expect(archiver.getDestFile()).andReturn( destFile ).anyTimes();
191 }
192
193 public void expectCSGetRepositories( final ArtifactRepository localRepo, final List<ArtifactRepository> remoteRepos )
194 {
195 expect(configSource.getLocalRepository()).andReturn( localRepo ).anyTimes();
196 expect(configSource.getRemoteRepositories()).andReturn( remoteRepos ).anyTimes();
197 }
198
199 public void expectBuildFromRepository( final ProjectBuildingException error )
200 {
201 try
202 {
203 expect(projectBuilder.buildFromRepository( (Artifact) anyObject(), (List) anyObject(),
204 (ArtifactRepository) anyObject() )).andThrow( error );
205
206 }
207 catch ( final ProjectBuildingException e )
208 {
209 Assert.fail( "should never happen" );
210 }
211 }
212
213 public void expectBuildFromRepository( final MavenProject project )
214 {
215 try
216 {
217 expect(projectBuilder.buildFromRepository( ( Artifact) anyObject(), (List)anyObject(), (ArtifactRepository)anyObject() )).andReturn( project ).anyTimes();
218 }
219 catch ( final ProjectBuildingException e )
220 {
221 Assert.fail( "should never happen" );
222 }
223 }
224
225 public void expectGetSession( final MavenSession session )
226 {
227 expect(configSource.getMavenSession()).andReturn( session ).anyTimes();
228 }
229
230 public void expectResolveDependencySets()
231 throws DependencyResolutionException
232 {
233 expect( dependencyResolver.resolveDependencySets( (Assembly) anyObject(),
234 (AssemblerConfigurationSource) anyObject(), (List<DependencySet>) anyObject() ))
235 .andReturn( new LinkedHashMap<DependencySet, Set<Artifact>>( ) ).anyTimes();
236
237 }
238
239
240 }