View Javadoc
1   /*
2    * Copyright 2007 The Codehaus Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.codehaus.plexus.archiver.rar;
17  
18  import java.io.File;
19  
20  import org.codehaus.plexus.archiver.Archiver;
21  import org.codehaus.plexus.archiver.BasePlexusArchiverTest;
22  import org.codehaus.plexus.archiver.UnArchiver;
23  import org.codehaus.plexus.util.FileUtils;
24  import org.junit.jupiter.api.BeforeEach;
25  import org.junit.jupiter.api.Test;
26  
27  import static org.junit.jupiter.api.Assertions.assertEquals;
28  import static org.junit.jupiter.api.Assertions.assertNotEquals;
29  import static org.junit.jupiter.api.Assertions.assertTrue;
30  
31  /**
32   * @author <a href="mailto:olamy@codehaus.org">olamy</a>
33   * @since 13 mars 07
34   */
35  class RarArchiverTest extends BasePlexusArchiverTest {
36  
37      public File getTargetRarFolder() {
38          return new File(getBasedir(), "/target/rartest/");
39      }
40  
41      @Override
42      @BeforeEach
43      public void setUp() throws Exception {
44          super.setUp();
45          // clean output directory and re create it
46          if (getTargetRarFolder().exists()) {
47              FileUtils.deleteDirectory(getTargetRarFolder());
48          }
49      }
50  
51      @Test
52      void testArchive() throws Exception {
53          Archiver archiver = lookup(Archiver.class, "rar");
54          archiver.setDestFile(new File(getTargetRarFolder(), "test.rar"));
55          // archiver.addDirectory( , "manifests" );
56          archiver.addFile(getTestFile("src/test/resources/manifests/manifest1.mf"), "manifests/manifest1.mf");
57  
58          archiver.createArchive();
59          assertTrue(new File(getTargetRarFolder(), "test.rar").exists());
60  
61          UnArchiver unArchiver = lookup(UnArchiver.class, "rar");
62          unArchiver.setSourceFile(new File(getTargetRarFolder(), "test.rar"));
63          unArchiver.setDestDirectory(getTargetRarFolder());
64          unArchiver.extract();
65          File manifestsDir = new File(getTargetRarFolder(), "/manifests");
66          assertTrue(manifestsDir.exists());
67  
68          File manifestsFile = new File(getTargetRarFolder(), "/manifests/manifest1.mf");
69          assertTrue(manifestsFile.exists());
70      }
71  
72      @Test
73      void testUnarchive() throws Exception {
74  
75          UnArchiver unArchiver = lookup(UnArchiver.class, "rar");
76          File rarFile = new File(getBasedir() + "/src/test/jars/test.rar");
77          assertTrue(rarFile.exists());
78          unArchiver.setSourceFile(rarFile);
79          unArchiver.setDestDirectory(getTargetRarFolder());
80          getTargetRarFolder().mkdir();
81          unArchiver.extract();
82  
83          File dirExtract = new File(getTargetRarFolder(), "META-INF");
84          assertTrue(dirExtract.exists());
85          assertTrue(dirExtract.isDirectory());
86      }
87  
88      /**
89       * Tests the .rar archiver is forced set to true, and after that
90       * tests the behavior when the forced is set to false.
91       *
92       * @throws Exception
93       */
94      @Test
95      void testRarIsForcedBehaviour() throws Exception {
96          Archiver rarArvhiver = createArchiver("rar");
97  
98          assertTrue(rarArvhiver.isSupportingForced());
99  
100         rarArvhiver.createArchive();
101 
102         final long creationTime = rarArvhiver.getDestFile().lastModified();
103 
104         rarArvhiver = createArchiver("rar");
105 
106         assertTrue(rarArvhiver.isSupportingForced());
107         // Default should be true
108         rarArvhiver.setForced(true);
109 
110         waitUntilNewTimestamp(rarArvhiver.getDestFile(), creationTime);
111         rarArvhiver.createArchive();
112 
113         final long firstRunTime = rarArvhiver.getDestFile().lastModified();
114         assertNotEquals(creationTime, firstRunTime);
115 
116         // waitUntilNewTimestamp( rarArvhiver.getDestFile(), firstRunTime );
117         rarArvhiver = createArchiver("rar");
118 
119         rarArvhiver.setForced(false);
120         rarArvhiver.createArchive();
121 
122         final long secondRunTime = rarArvhiver.getDestFile().lastModified();
123 
124         assertEquals(secondRunTime, firstRunTime);
125     }
126 }