1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
33
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
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
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
90
91
92
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
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
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 }