View Javadoc
1   package org.apache.maven.plugins.assembly.archive;
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.repository.ArtifactRepository;
24  import org.apache.maven.model.Model;
25  import org.apache.maven.plugins.assembly.AssemblerConfigurationSource;
26  import org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException;
27  import org.apache.maven.plugins.assembly.archive.phase.AssemblyArchiverPhase;
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.format.AssemblyFormattingException;
31  import org.apache.maven.plugins.assembly.model.Assembly;
32  import org.apache.maven.plugins.assembly.mojos.AbstractAssemblyMojo;
33  import org.apache.maven.plugins.assembly.testutils.TestFileManager;
34  import org.apache.maven.project.MavenProject;
35  import org.codehaus.plexus.DefaultPlexusContainer;
36  import org.codehaus.plexus.PlexusContainer;
37  import org.codehaus.plexus.PlexusContainerException;
38  import org.codehaus.plexus.archiver.Archiver;
39  import org.codehaus.plexus.archiver.ArchiverException;
40  import org.codehaus.plexus.archiver.diags.NoOpArchiver;
41  import org.codehaus.plexus.archiver.manager.ArchiverManager;
42  import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
43  import org.codehaus.plexus.archiver.tar.TarArchiver;
44  import org.codehaus.plexus.archiver.tar.TarLongFileMode;
45  import org.codehaus.plexus.archiver.war.WarArchiver;
46  import org.codehaus.plexus.archiver.zip.ZipArchiver;
47  import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
48  import org.codehaus.plexus.logging.Logger;
49  import org.codehaus.plexus.logging.console.ConsoleLogger;
50  import org.codehaus.plexus.util.FileUtils;
51  import org.easymock.classextension.EasyMockSupport;
52  import org.junit.AfterClass;
53  import org.junit.Before;
54  import org.junit.Test;
55  
56  import java.io.File;
57  import java.io.IOException;
58  import java.util.ArrayList;
59  import java.util.Collections;
60  import java.util.List;
61  
62  import static org.easymock.EasyMock.anyBoolean;
63  import static org.easymock.EasyMock.anyObject;
64  import static org.easymock.EasyMock.expect;
65  import static org.easymock.EasyMock.expectLastCall;
66  import static org.junit.Assert.assertEquals;
67  import static org.junit.Assert.assertFalse;
68  import static org.junit.Assert.assertNull;
69  import static org.junit.Assert.fail;
70  
71  public class DefaultAssemblyArchiverTest
72  {
73  
74      private static final TestFileManager fileManager = new TestFileManager( "def-assy-archiver.test.", "" );
75  
76      private PlexusContainer container;
77  
78      @AfterClass
79      public static void tearDown()
80          throws Exception
81      {
82          fileManager.cleanUp();
83      }
84  
85      public static void setupInterpolators( AssemblerConfigurationSource configSource )
86      {
87          expect( configSource.getRepositoryInterpolator() ).andReturn(
88              FixedStringSearchInterpolator.create() ).anyTimes();
89          expect( configSource.getCommandLinePropsInterpolator() ).andReturn(
90              FixedStringSearchInterpolator.create() ).anyTimes();
91          expect( configSource.getEnvInterpolator() ).andReturn( FixedStringSearchInterpolator.create() ).anyTimes();
92          expect( configSource.getMainProjectInterpolator() ).andReturn(
93              FixedStringSearchInterpolator.create() ).anyTimes();
94  
95      }
96  
97      public static void setupInterpolators( AssemblerConfigurationSource configSource, MavenProject mavenProject )
98      {
99          expect( configSource.getRepositoryInterpolator() ).andReturn(
100             FixedStringSearchInterpolator.create() ).anyTimes();
101         expect( configSource.getCommandLinePropsInterpolator() ).andReturn(
102             FixedStringSearchInterpolator.create() ).anyTimes();
103         expect( configSource.getEnvInterpolator() ).andReturn( FixedStringSearchInterpolator.create() ).anyTimes();
104         expect( configSource.getMainProjectInterpolator() ).andReturn(
105             AbstractAssemblyMojo.mainProjectInterpolator( mavenProject ) ).anyTimes();
106 
107     }
108 
109     @Before
110     public void setup()
111         throws PlexusContainerException
112     {
113         container = new DefaultPlexusContainer();
114     }
115 
116     @Test( expected = InvalidAssemblerConfigurationException.class )
117     public void failWhenAssemblyIdIsNull()
118         throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
119     {
120         final EasyMockSupport mm = new EasyMockSupport();
121 
122         final MockAndControlForAssemblyArchiver macMgr = new MockAndControlForAssemblyArchiver( mm );
123 
124         final AssemblerConfigurationSource configSource =
125             mm.createControl().createMock( AssemblerConfigurationSource.class );
126 
127         mm.replayAll();
128 
129         final DefaultAssemblyArchiver archiver = createSubject( macMgr, null, null );
130         archiver.createArchive( new Assembly(), "full-name", "zip", configSource, false, null );
131 
132         mm.verifyAll();
133     }
134 
135     @Test
136     public void testCreateArchive()
137         throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException,
138         IOException, DependencyResolutionException
139     {
140         final EasyMockSupport mm = new EasyMockSupport();
141 
142         final MockAndControlForAssemblyArchiver macMgr = new MockAndControlForAssemblyArchiver( mm );
143 
144         macMgr.expectGetArchiver( "zip", Archiver.class );
145         macMgr.expectGetDestFile( new File( "test" ) );
146 
147         final AssemblyArchiverPhase phase = mm.createControl().createMock( AssemblyArchiverPhase.class );
148 
149         phase.execute( (Assembly) anyObject(), (Archiver) anyObject(), (AssemblerConfigurationSource) anyObject() );
150 
151         final AssemblerConfigurationSource configSource =
152             mm.createControl().createMock( AssemblerConfigurationSource.class );
153 
154         final File tempDir = fileManager.createTempDir();
155         FileUtils.deleteDirectory( tempDir );
156 
157         expect( configSource.getTemporaryRootDirectory() ).andReturn( tempDir ).anyTimes();
158         expect( configSource.isDryRun() ).andReturn( false ).anyTimes();
159         expect( configSource.isIgnoreDirFormatExtensions() ).andReturn( false ).anyTimes();
160 
161         final File outDir = fileManager.createTempDir();
162 
163         macMgr.archiver.setDestFile( new File( outDir, "full-name.zip" ) );
164 
165         try
166         {
167             macMgr.archiver.createArchive();
168         }
169         catch ( final ArchiverException e )
170         {
171             fail( "Should never happen" );
172         }
173         catch ( final IOException e )
174         {
175             fail( "Should never happen" );
176         }
177 
178         expect( configSource.getOutputDirectory() ).andReturn( outDir );
179         expect( configSource.getFinalName() ).andReturn( "finalName" );
180         expect( configSource.getArchiverConfig() ).andReturn( null ).anyTimes();
181         expect( configSource.getWorkingDirectory() ).andReturn( new File( "." ) ).anyTimes();
182         expect( configSource.isUpdateOnly() ).andReturn( false ).anyTimes();
183         expect( configSource.isIgnorePermissions() ).andReturn( false ).anyTimes();
184 
185         final Assembly assembly = new Assembly();
186         assembly.setId( "id" );
187 
188         // try
189         // {
190         //         expect( macMgr.dependencyResolver.resolve( (Assembly) anyObject(), (AssemblerConfigurationSource)
191         // anyObject() )).andReturn( new HashSet<Artifact>(  ) );
192 //            macMgr.dependencyResolverControl.setMatcher( MockControl.ALWAYS_MATCHER );
193         //     }
194         //  catch ( final DependencyResolutionException e )
195         // {
196         //    fail( "Should never happen" );
197         // }
198 
199         mm.replayAll();
200 
201         final DefaultAssemblyArchiver subject = createSubject( macMgr, Collections.singletonList( phase ), null );
202 
203         subject.createArchive( assembly, "full-name", "zip", configSource, false, null );
204 
205         mm.verifyAll();
206     }
207 
208     @Test
209     public void testCreateArchiver_ShouldConfigureArchiver()
210         throws NoSuchArchiverException, ArchiverException
211     {
212         final EasyMockSupport mm = new EasyMockSupport();
213 
214         final MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
215 
216         final TestArchiverWithConfig archiver = new TestArchiverWithConfig();
217 
218         macArchiverManager.expectGetArchiver( "dummy", archiver );
219 
220         final AssemblerConfigurationSource configSource = mm.createMock( AssemblerConfigurationSource.class );
221 
222         final String simpleConfig = "value";
223 
224         expect( configSource.getArchiverConfig() ).andReturn(
225             "<configuration><simpleConfig>" + simpleConfig + "</simpleConfig></configuration>" ).anyTimes();
226 
227         final MavenProject project = new MavenProject( new Model() );
228 
229         expect( configSource.getProject() ).andReturn( project ).anyTimes();
230 
231         expect( configSource.getMavenSession() ).andReturn( null ).anyTimes();
232 
233         expect( configSource.isDryRun() ).andReturn( false ).anyTimes();
234 
235         expect( configSource.getWorkingDirectory() ).andReturn( new File( "." ) ).anyTimes();
236 
237         expect( configSource.isUpdateOnly() ).andReturn( false ).anyTimes();
238 
239         final ArtifactRepository lr = mm.createMock( ArtifactRepository.class );
240 
241         expect( lr.getBasedir() ).andReturn( "/path/to/local/repo" ).anyTimes();
242 
243         expect( configSource.getLocalRepository() ).andReturn( lr ).anyTimes();
244         expect( configSource.isIgnorePermissions() ).andReturn( true );
245         setupInterpolators( configSource, project );
246 
247         mm.replayAll();
248 
249         final DefaultAssemblyArchiver subject =
250             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
251 
252         subject.createArchiver( "dummy", false, "finalName", configSource, null, false, null );
253 
254         assertEquals( simpleConfig, archiver.getSimpleConfig() );
255 
256         mm.verifyAll();
257     }
258 
259     @Test
260     public void testCreateArchiver_ShouldCreateTarArchiverWithNoCompression()
261         throws NoSuchArchiverException, ArchiverException
262     {
263         final EasyMockSupport mm = new EasyMockSupport();
264 
265         final TestTarArchiver ttArchiver = new TestTarArchiver();
266 
267         final MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
268 
269         macArchiverManager.expectGetArchiver( "tar", ttArchiver );
270 
271         final AssemblerConfigurationSource configSource = mm.createMock( AssemblerConfigurationSource.class );
272 
273         expect( configSource.getTarLongFileMode() ).andReturn( TarLongFileMode.fail.toString() ).anyTimes();
274         expect( configSource.isDryRun() ).andReturn( false ).anyTimes();
275 
276         expect( configSource.getArchiverConfig() ).andReturn( null ).anyTimes();
277 
278         final DefaultAssemblyArchiver subject = setupStdExpectations( mm, macArchiverManager, configSource );
279 
280         subject.createArchiver( "tar", false, "finalName", configSource, null, false, null );
281 
282         assertNull( ttArchiver.compressionMethod );
283         assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
284 
285         mm.verifyAll();
286     }
287 
288     private DefaultAssemblyArchiver setupStdExpectations( EasyMockSupport mm,
289                                                           MockAndControlForAssemblyArchiver macArchiverManager,
290                                                           AssemblerConfigurationSource configSource )
291     {
292         expect( configSource.getProject() ).andReturn( new MavenProject( new Model() ) ).anyTimes();
293 
294         expect( configSource.getJarArchiveConfiguration() ).andReturn( null ).anyTimes();
295 
296         expect( configSource.getWorkingDirectory() ).andReturn( new File( "." ) ).anyTimes();
297 
298         expect( configSource.isUpdateOnly() ).andReturn( false ).anyTimes();
299 
300         expect( configSource.isIgnorePermissions() ).andReturn( true ).anyTimes();
301 
302         mm.replayAll();
303 
304         return createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
305     }
306 
307     @Test
308     public void testCreateArchiver_ShouldCreateWarArchiverWithIgnoreWebxmlSetToFalse()
309         throws NoSuchArchiverException, ArchiverException
310     {
311         final EasyMockSupport mm = new EasyMockSupport();
312 
313         final TestWarArchiver twArchiver = new TestWarArchiver();
314 
315         final MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
316 
317         macArchiverManager.expectGetArchiver( "war", twArchiver );
318 
319         final AssemblerConfigurationSource configSource = mm.createMock( AssemblerConfigurationSource.class );
320 
321         expect( configSource.isDryRun() ).andReturn( false ).anyTimes();
322         expect( configSource.getArchiverConfig() ).andReturn( null ).anyTimes();
323         expect( configSource.getMavenSession() ).andReturn( null ).anyTimes();
324         final DefaultAssemblyArchiver subject = setupStdExpectations( mm, macArchiverManager, configSource );
325 
326         subject.createArchiver( "war", false, null, configSource, null, false, null );
327 
328         assertFalse( twArchiver.ignoreWebxml );
329     }
330 
331     @Test
332     public void testCreateArchiver_ShouldCreateZipArchiver()
333         throws NoSuchArchiverException, ArchiverException
334     {
335         final EasyMockSupport mm = new EasyMockSupport();
336 
337         final ZipArchiver archiver = new ZipArchiver();
338 
339         final MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
340 
341         macArchiverManager.expectGetArchiver( "zip", archiver );
342 
343         final AssemblerConfigurationSource configSource = mm.createMock( AssemblerConfigurationSource.class );
344 
345         expect( configSource.isDryRun() ).andReturn( false ).anyTimes();
346         expect( configSource.getArchiverConfig() ).andReturn( null ).anyTimes();
347         expect( configSource.getWorkingDirectory() ).andReturn( new File( "." ) ).anyTimes();
348         expect( configSource.isUpdateOnly() ).andReturn( false ).anyTimes();
349         expect( configSource.getJarArchiveConfiguration() ).andReturn( null ).anyTimes();
350         expect( configSource.isIgnorePermissions() ).andReturn( true ).anyTimes();
351 
352         mm.replayAll();
353 
354         final DefaultAssemblyArchiver subject =
355             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
356 
357         subject.createArchiver( "zip", false, null, configSource, null, false, null );
358     }
359 
360     @Test
361     public void testCreateWarArchiver_ShouldDisableIgnoreWebxmlOption()
362         throws NoSuchArchiverException
363     {
364         final EasyMockSupport mm = new EasyMockSupport();
365 
366         final TestWarArchiver twArchiver = new TestWarArchiver();
367 
368         final MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
369 
370         macArchiverManager.expectGetArchiver( "war", twArchiver );
371 
372         mm.replayAll();
373 
374         final DefaultAssemblyArchiver subject =
375             createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
376 
377         subject.createWarArchiver();
378 
379         assertFalse( twArchiver.ignoreWebxml );
380     }
381 
382     @Test
383     public void testCreateTarArchiver_ShouldNotInitializeCompression()
384         throws NoSuchArchiverException, ArchiverException
385     {
386         final EasyMockSupport mm = new EasyMockSupport();
387 
388         final TestTarArchiver ttArchiver = new TestTarArchiver();
389 
390         final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
391 
392         subject.createTarArchiver( "tar", TarLongFileMode.fail );
393 
394         assertNull( ttArchiver.compressionMethod );
395         assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
396 
397         mm.verifyAll();
398     }
399 
400     private DefaultAssemblyArchiver createSubject( EasyMockSupport mm, TestTarArchiver ttArchiver )
401         throws NoSuchArchiverException
402     {
403         final MockAndControlForAssemblyArchiver macArchiverManager = new MockAndControlForAssemblyArchiver( mm );
404 
405         macArchiverManager.expectGetArchiver( "tar", ttArchiver );
406 
407         mm.replayAll();
408 
409         return createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
410     }
411 
412     @Test
413     public void testCreateTarArchiver_TarGzFormat_ShouldInitializeGZipCompression()
414         throws NoSuchArchiverException, ArchiverException
415     {
416         final EasyMockSupport mm = new EasyMockSupport();
417 
418         final TestTarArchiver ttArchiver = new TestTarArchiver();
419 
420         final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
421 
422         subject.createTarArchiver( "tar.gz", TarLongFileMode.fail );
423 
424         assertEquals( TarArchiver.TarCompressionMethod.gzip, ttArchiver.compressionMethod );
425         assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
426 
427         mm.verifyAll();
428     }
429 
430     @Test
431     public void testCreateTarArchiver_TgzFormat_ShouldInitializeGZipCompression()
432         throws NoSuchArchiverException, ArchiverException
433     {
434         final EasyMockSupport mm = new EasyMockSupport();
435 
436         final TestTarArchiver ttArchiver = new TestTarArchiver();
437 
438         final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
439 
440         subject.createTarArchiver( "tgz", TarLongFileMode.fail );
441 
442         assertEquals( TarArchiver.TarCompressionMethod.gzip, ttArchiver.compressionMethod );
443         assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
444 
445         mm.verifyAll();
446     }
447 
448     @Test
449     public void testCreateTarArchiver_TarBz2Format_ShouldInitializeBZipCompression()
450         throws NoSuchArchiverException, ArchiverException
451     {
452         final EasyMockSupport mm = new EasyMockSupport();
453 
454         final TestTarArchiver ttArchiver = new TestTarArchiver();
455 
456         final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
457 
458         subject.createTarArchiver( "tar.bz2", TarLongFileMode.fail );
459 
460         assertEquals( TarArchiver.TarCompressionMethod.bzip2, ttArchiver.compressionMethod );
461         assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
462 
463         mm.verifyAll();
464     }
465 
466     @Test
467     public void testCreateTarArchiver_Tbz2Format_ShouldInitializeBZipCompression()
468         throws NoSuchArchiverException, ArchiverException
469     {
470         final EasyMockSupport mm = new EasyMockSupport();
471 
472         final TestTarArchiver ttArchiver = new TestTarArchiver();
473 
474         final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
475 
476         subject.createTarArchiver( "tbz2", TarLongFileMode.fail );
477 
478         assertEquals( TarArchiver.TarCompressionMethod.bzip2, ttArchiver.compressionMethod );
479         assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
480 
481         mm.verifyAll();
482     }
483 
484     @Test
485     public void testCreateTarArchiver_InvalidFormat_ShouldFailWithInvalidCompression()
486         throws NoSuchArchiverException, ArchiverException
487     {
488         final EasyMockSupport mm = new EasyMockSupport();
489 
490         final TestTarArchiver ttArchiver = new TestTarArchiver();
491 
492         final DefaultAssemblyArchiver subject = createSubject( mm, ttArchiver );
493 
494         try
495         {
496             subject.createTarArchiver( "tar.Z", null );
497 
498             fail( "Invalid compression formats should throw an error." );
499         }
500         catch ( final IllegalArgumentException e )
501         {
502             // expected.
503         }
504 
505         mm.verifyAll();
506     }
507 
508     private DefaultAssemblyArchiver createSubject( final MockAndControlForAssemblyArchiver macMgr,
509                                                    final List<AssemblyArchiverPhase> phases, Logger logger )
510     {
511         final DefaultAssemblyArchiver subject = new DefaultAssemblyArchiver( macMgr.archiverManager, phases );
512 
513         subject.setContainer( container );
514 
515         if ( logger == null )
516         {
517             logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
518         }
519 
520         subject.enableLogging( logger );
521 
522         return subject;
523     }
524 
525     private static final class TestTarArchiver
526         extends TarArchiver
527     {
528 
529         TarCompressionMethod compressionMethod;
530 
531         TarLongFileMode longFileMode;
532 
533         @Override
534         protected void execute()
535             throws ArchiverException, IOException
536         {
537             super.createArchive();
538         }
539 
540         @Override
541         public void setCompression( final TarCompressionMethod mode )
542         {
543             compressionMethod = mode;
544             super.setCompression( mode );
545         }
546 
547         @Override
548         public void setLongfile( final TarLongFileMode mode )
549         {
550             longFileMode = mode;
551             super.setLongfile( mode );
552         }
553 
554     }
555 
556     private static final class TestWarArchiver
557         extends WarArchiver
558     {
559 
560         boolean ignoreWebxml;
561 
562         @Override
563         public void setIgnoreWebxml( final boolean ignore )
564         {
565             ignoreWebxml = ignore;
566             super.setIgnoreWebxml( ignore );
567         }
568 
569     }
570 
571     public static final class TestArchiverWithConfig
572         extends NoOpArchiver
573     {
574 
575         private String simpleConfig;
576 
577         public String getSimpleConfig()
578         {
579             return simpleConfig;
580         }
581 
582 
583         public String getDuplicateBehavior()
584         {
585             return Archiver.DUPLICATES_ADD;
586         }
587     }
588 
589     private final class MockAndControlForAssemblyArchiver
590     {
591         final ArchiverManager archiverManager;
592 
593         final DependencyResolver dependencyResolver;
594 
595         private final EasyMockSupport mm;
596 
597         Archiver archiver;
598 
599         public MockAndControlForAssemblyArchiver( final EasyMockSupport mm )
600         {
601             this.mm = mm;
602             archiverManager = mm.createControl().createMock( ArchiverManager.class );
603 
604             dependencyResolver = mm.createControl().createMock( DependencyResolver.class );
605 
606         }
607 
608         void expectGetDestFile( final File file )
609         {
610             expect( archiver.getDestFile() ).andReturn( file ).anyTimes();
611         }
612 
613         void createArchiver( final Class<? extends Archiver> archiverClass )
614         {
615             archiver = mm.createControl().createMock( archiverClass );
616 
617             archiver.setForced( anyBoolean() );
618             expectLastCall().anyTimes();
619 
620             archiver.setIgnorePermissions( false );
621             expectLastCall().anyTimes();
622         }
623 
624         void expectGetArchiver( final String format, final Class<? extends Archiver> archiverClass )
625         {
626             createArchiver( archiverClass );
627 
628             try
629             {
630                 expect( archiverManager.getArchiver( format ) ).andReturn( archiver );
631             }
632             catch ( final NoSuchArchiverException e )
633             {
634                 Assert.fail( "should never happen" );
635             }
636 
637         }
638 
639         void expectGetArchiver( final String format, final Archiver archiver )
640             throws NoSuchArchiverException
641         {
642             expect( archiverManager.getArchiver( format ) ).andReturn( archiver );
643         }
644     }
645 
646 }