View Javadoc
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   * @author <a href="mailto:viktor@jv-ration.com">Viktor Sadovnikov</a>
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  }