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.plugins.assembly.AssemblerConfigurationSource;
25  import org.apache.maven.plugins.assembly.archive.DefaultAssemblyArchiverTest;
26  import org.apache.maven.plugins.assembly.artifact.DependencyResolutionException;
27  import org.apache.maven.plugins.assembly.artifact.DependencyResolver;
28  import org.apache.maven.plugins.assembly.model.Assembly;
29  import org.apache.maven.plugins.assembly.model.DependencySet;
30  import org.apache.maven.plugins.assembly.model.ModuleSet;
31  import org.apache.maven.project.MavenProject;
32  import org.codehaus.plexus.archiver.ArchivedFileSet;
33  import org.codehaus.plexus.archiver.Archiver;
34  import org.codehaus.plexus.archiver.ArchiverException;
35  import org.easymock.EasyMock;
36  import org.easymock.classextension.EasyMockSupport;
37  
38  import java.io.File;
39  import java.nio.charset.Charset;
40  import java.util.LinkedHashMap;
41  import java.util.List;
42  import java.util.Set;
43  
44  import static org.easymock.EasyMock.anyInt;
45  import static org.easymock.EasyMock.anyObject;
46  import static org.easymock.EasyMock.expect;
47  
48  public class MockAndControlForAddArtifactTask
49  {
50  
51      public final Archiver archiver;
52  
53      public final AssemblerConfigurationSource configSource;
54  
55      public final DependencyResolver dependencyResolver;
56  
57      private MavenProject project = null;
58  
59      public MockAndControlForAddArtifactTask( final EasyMockSupport mockManager )
60      {
61          this( mockManager, null );
62      }
63  
64      public MockAndControlForAddArtifactTask( final EasyMockSupport mockManager, final MavenProject project )
65      {
66          this.project = project;
67  
68          archiver = mockManager.createMock( Archiver.class );
69          configSource = mockManager.createMock( AssemblerConfigurationSource.class );
70          dependencyResolver = mockManager.createMock( DependencyResolver.class );
71  
72          enableDefaultExpectations();
73      }
74  
75      private void enableDefaultExpectations()
76      {
77          expect( configSource.getProject() ).andReturn( project ).anyTimes();
78          expect( configSource.getMavenSession() ).andReturn( null ).anyTimes();
79      }
80  
81      public void expectGetFinalName( final String finalName )
82      {
83          expect( configSource.getFinalName() ).andReturn( finalName ).atLeastOnce();
84      }
85  
86      public void expectGetDestFile( final File destFile )
87      {
88          expect( archiver.getDestFile() ).andReturn( destFile ).atLeastOnce();
89      }
90  
91      public void expectGetMode( final int originalDirMode, final int originalFileMode )
92      {
93          expect( archiver.getOverrideDirectoryMode() ).andReturn( originalDirMode );
94          expect( archiver.getOverrideFileMode() ).andReturn( originalFileMode );
95          archiver.setFileMode( anyInt() );
96          EasyMock.expectLastCall().anyTimes();
97      }
98  
99  
100     public void expectAddArchivedFileSet()
101     {
102         try
103         {
104             archiver.addArchivedFileSet( (File) anyObject(), (String) anyObject(), (String[]) anyObject(),
105                                          (String[]) anyObject() );
106             EasyMock.expectLastCall().anyTimes();
107             archiver.addArchivedFileSet( (ArchivedFileSet) anyObject(), (Charset) anyObject() );
108             EasyMock.expectLastCall().anyTimes();
109 
110         }
111         catch ( final ArchiverException e )
112         {
113             Assert.fail( "Should never happen." );
114         }
115     }
116 
117     public void expectModeChange( final int originalDirMode, final int originalFileMode, final int dirMode,
118                                   final int fileMode, final int numberOfChanges )
119     {
120         expect( archiver.getOverrideDirectoryMode() ).andReturn( originalDirMode );
121         expect( archiver.getOverrideFileMode() ).andReturn( originalFileMode );
122 
123         // one of the changes will occur below, when we restore the original mode.
124         if ( numberOfChanges > 1 )
125         {
126             for ( int i = 1; i < numberOfChanges; i++ )
127             {
128                 if ( dirMode > -1 )
129                 {
130                     archiver.setDirectoryMode( dirMode );
131                 }
132 
133                 if ( fileMode > -1 )
134                 {
135                     archiver.setFileMode( fileMode );
136                 }
137             }
138         }
139 
140         if ( dirMode > -1 )
141         {
142             archiver.setDirectoryMode( originalDirMode );
143         }
144 
145         if ( fileMode > -1 )
146         {
147             archiver.setFileMode( originalFileMode );
148         }
149     }
150 
151     public void expectAddFile( final File file, final String outputLocation, final int fileMode )
152     {
153         try
154         {
155             archiver.addFile( (File) anyObject(), (String) anyObject(), anyInt() );
156             EasyMock.expectLastCall().anyTimes();
157         }
158         catch ( final ArchiverException e )
159         {
160             Assert.fail( "Should never happen." );
161         }
162     }
163 
164 
165     public void expectAddFile( final File file, final String outputLocation )
166     {
167         try
168         {
169             archiver.addFile( file, outputLocation );
170             EasyMock.expectLastCall().atLeastOnce();
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 ).atLeastOnce();
181     }
182 
183 
184     public void expectResolveDependencySets()
185         throws DependencyResolutionException
186     {
187         expect( dependencyResolver.resolveDependencySets( (Assembly) anyObject(), (ModuleSet) anyObject(),
188                                                           (AssemblerConfigurationSource) anyObject(),
189                                                           (List<DependencySet>) anyObject() ) ).andReturn(
190             new LinkedHashMap<DependencySet, Set<Artifact>>() ).anyTimes();
191 
192     }
193 
194     public void expectInterpolators()
195     {
196         DefaultAssemblyArchiverTest.setupInterpolators( configSource );
197 
198     }
199 }