View Javadoc
1   package org.apache.maven.plugin.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 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         // one of the changes will occur below, when we restore the original mode.
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 //            projectBuilderCtl.setThrowable( error, MockControl.ONE_OR_MORE );
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 }