1 package org.codehaus.plexus.archiver.tar;
2
3 import java.io.File;
4
5 import org.codehaus.plexus.archiver.TestSupport;
6 import org.codehaus.plexus.archiver.UnArchiver;
7 import org.codehaus.plexus.components.io.fileselectors.FileSelector;
8 import org.codehaus.plexus.components.io.fileselectors.IncludeExcludeFileSelector;
9 import org.codehaus.plexus.util.FileUtils;
10 import org.junit.jupiter.api.Test;
11
12 import static org.junit.jupiter.api.Assertions.assertEquals;
13
14
15
16
17 class TarUnArchiverTest extends TestSupport {
18
19 private void runUnarchiver(FileSelector[] selectors, boolean[] results) throws Exception {
20 String s = "target/tar-unarchiver-tests";
21
22 File testJar = new File(getBasedir(), "src/test/jars/test.tar.gz");
23
24 File outputDirectory = new File(getBasedir(), s);
25
26 TarUnArchiver tarUn = (TarUnArchiver) lookup(UnArchiver.class, "tar.gz");
27 tarUn.setSourceFile(testJar);
28 tarUn.setDestDirectory(outputDirectory);
29 tarUn.setFileSelectors(selectors);
30
31 FileUtils.deleteDirectory(outputDirectory);
32
33 tarUn.extract(testJar.getAbsolutePath(), outputDirectory);
34
35 assertFileExistance(s, "/resources/artifactId/test.properties", results[0]);
36 assertFileExistance(s, "/resources/artifactId/directory/test.properties", results[1]);
37 assertFileExistance(s, "/META-INF/MANIFEST.MF", results[2]);
38 }
39
40 private void assertFileExistance(String s, String file, boolean exists) {
41 File f0 = new File(getBasedir(), s + file);
42 assertEquals(
43 exists,
44 f0.exists(),
45 String.format("Did %s expect to find %s file", exists ? "" : "NOT", f0.getAbsoluteFile()));
46 }
47
48 @Test
49 void testExtractingADirectory() throws Exception {
50 runUnarchiver(null, new boolean[] {true, true, true});
51 }
52
53 @Test
54 void testSelectors() throws Exception {
55 IncludeExcludeFileSelector fileSelector = new IncludeExcludeFileSelector();
56 runUnarchiver(new FileSelector[] {fileSelector}, new boolean[] {true, true, true});
57
58 fileSelector.setExcludes(new String[] {"**/test.properties"});
59 runUnarchiver(new FileSelector[] {fileSelector}, new boolean[] {false, false, true});
60
61 fileSelector.setIncludes(new String[] {"**/test.properties"});
62 fileSelector.setExcludes(null);
63 runUnarchiver(new FileSelector[] {fileSelector}, new boolean[] {true, true, false});
64
65 fileSelector.setExcludes(new String[] {"resources/artifactId/directory/test.properties"});
66 runUnarchiver(new FileSelector[] {fileSelector}, new boolean[] {true, false, false});
67 }
68 }