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 org.apache.maven.execution.MavenSession;
23  import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
24  import org.apache.maven.plugin.assembly.testutils.MockManager;
25  import org.apache.maven.project.MavenProject;
26  import org.codehaus.plexus.archiver.Archiver;
27  import org.codehaus.plexus.archiver.ArchiverException;
28  import org.easymock.MockControl;
29  
30  import java.io.File;
31  import java.util.List;
32  
33  import junit.framework.Assert;
34  
35  public class MockAndControlForAddArtifactTask
36  {
37  
38      public Archiver archiver;
39  
40      public MockControl archiverCtl;
41  
42      public AssemblerConfigurationSource configSource;
43  
44      public MockControl configSourceCtl;
45  
46      private MavenProject project = null;
47  
48      public MockAndControlForAddArtifactTask( final MockManager mockManager )
49      {
50          this( mockManager, null );
51      }
52  
53      public MockAndControlForAddArtifactTask( final MockManager mockManager, final MavenProject project )
54      {
55          this.project = project;
56  
57          archiverCtl = MockControl.createControl( Archiver.class );
58          mockManager.add( archiverCtl );
59  
60          archiver = (Archiver) archiverCtl.getMock();
61  
62          configSourceCtl = MockControl.createControl( AssemblerConfigurationSource.class );
63          mockManager.add( configSourceCtl );
64  
65          configSource = (AssemblerConfigurationSource) configSourceCtl.getMock();
66  
67          enableDefaultExpectations();
68      }
69  
70      private void enableDefaultExpectations()
71      {
72          configSource.getProject();
73          configSourceCtl.setReturnValue( project, MockControl.ZERO_OR_MORE );
74  
75          configSource.getMavenSession();
76          configSourceCtl.setReturnValue( null, MockControl.ZERO_OR_MORE );
77      }
78  
79      public void expectGetFinalName( final String finalName )
80      {
81          configSource.getFinalName();
82          configSourceCtl.setReturnValue( finalName, MockControl.ONE_OR_MORE );
83      }
84  
85      public void expectGetDestFile( final File destFile )
86      {
87          archiver.getDestFile();
88          archiverCtl.setReturnValue( destFile, MockControl.ZERO_OR_MORE );
89      }
90  
91      public void expectAddArchivedFileSet( final File artifactFile, final String outputLocation,
92                                            final String[] includes, final String[] excludes )
93      {
94          try
95          {
96              archiver.addArchivedFileSet( artifactFile, outputLocation, includes, excludes );
97  
98              if ( ( includes != null ) || ( excludes != null ) )
99              {
100                 archiverCtl.setMatcher( MockControl.ARRAY_MATCHER );
101             }
102 
103             archiverCtl.setVoidCallable( MockControl.ONE_OR_MORE );
104         }
105         catch ( final ArchiverException e )
106         {
107             Assert.fail( "Should never happen." );
108         }
109     }
110 
111     public void expectModeChange( final int originalDirMode, final int originalFileMode, final int dirMode,
112                                   final int fileMode, final int numberOfChanges )
113     {
114         archiver.getOverrideDirectoryMode();
115         archiverCtl.setReturnValue( originalDirMode );
116 
117         archiver.getOverrideFileMode();
118         archiverCtl.setReturnValue( originalFileMode );
119 
120         // one of the changes will occur below, when we restore the original mode.
121         if ( numberOfChanges > 1 )
122         {
123             for ( int i = 1; i < numberOfChanges; i++ )
124             {
125                 if ( dirMode > -1 )
126                 {
127                     archiver.setDirectoryMode( dirMode );
128                 }
129 
130                 if ( fileMode > -1 )
131                 {
132                     archiver.setFileMode( fileMode );
133                 }
134             }
135         }
136 
137         if ( dirMode > -1 )
138         {
139             archiver.setDirectoryMode( originalDirMode );
140         }
141 
142         if ( fileMode > -1 )
143         {
144             archiver.setFileMode( originalFileMode );
145         }
146     }
147 
148     public void expectAddFile( final File file, final String outputLocation, final int fileMode )
149     {
150         try
151         {
152             archiver.addFile( file, outputLocation, fileMode );
153             archiverCtl.setVoidCallable( MockControl.ONE_OR_MORE );
154         }
155         catch ( final ArchiverException e )
156         {
157             Assert.fail( "Should never happen." );
158         }
159     }
160 
161     public void expectAddFile( final File file, final String outputLocation )
162     {
163         try
164         {
165             archiver.addFile( file, outputLocation );
166             archiverCtl.setVoidCallable( MockControl.ONE_OR_MORE );
167         }
168         catch ( final ArchiverException e )
169         {
170             Assert.fail( "Should never happen." );
171         }
172     }
173 
174     public void expectGetReactorProjects( final List<MavenProject> projects )
175     {
176         configSource.getReactorProjects();
177         configSourceCtl.setReturnValue( projects, MockControl.ONE_OR_MORE );
178     }
179 
180     public void expectGetSession( final MavenSession session )
181     {
182         configSource.getMavenSession();
183         configSourceCtl.setReturnValue( session, MockControl.ONE_OR_MORE );
184     }
185 }