View Javadoc
1   package org.apache.maven.plugins.assembly.archive.task.testutils;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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         // one of the changes will occur below, when we restore the original mode.
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 //            projectBuilderCtl.setThrowable( error, MockControl.ONE_OR_MORE );
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 }