1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.assembly.archive.task;
20
21 import java.io.File;
22 import java.util.Collections;
23
24 import org.codehaus.plexus.archiver.Archiver;
25 import org.codehaus.plexus.archiver.FileSet;
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.api.Test;
28 import org.junit.jupiter.api.extension.ExtendWith;
29 import org.junit.jupiter.api.io.TempDir;
30 import org.mockito.junit.jupiter.MockitoExtension;
31 import org.mockito.junit.jupiter.MockitoSettings;
32 import org.mockito.quality.Strictness;
33
34 import static org.mockito.Mockito.any;
35 import static org.mockito.Mockito.mock;
36 import static org.mockito.Mockito.verify;
37 import static org.mockito.Mockito.when;
38
39 @MockitoSettings(strictness = Strictness.WARN)
40 @ExtendWith(MockitoExtension.class)
41 public class AddDirectoryTaskTest {
42 @TempDir
43 private File temporaryFolder;
44
45 private Archiver archiver;
46
47 @BeforeEach
48 public void setUp() {
49 this.archiver = mock(Archiver.class);
50 }
51
52 @Test
53 public void testAddDirectoryShouldNotAddDirectoryIfNonExistent() throws Exception {
54 final int defaultDirMode = -1;
55 final int defaultFileMode = -1;
56
57 when(archiver.getOverrideDirectoryMode()).thenReturn(defaultDirMode);
58 when(archiver.getOverrideFileMode()).thenReturn(defaultFileMode);
59
60 AddDirectoryTask task = new AddDirectoryTask(new File(temporaryFolder, "non-existent"));
61
62 task.execute(archiver);
63
64
65 verify(archiver).getOverrideDirectoryMode();
66 verify(archiver).getOverrideFileMode();
67 }
68
69 @Test
70 public void testAddDirectoryShouldAddDirectory() throws Exception {
71 final int defaultDirMode = -1;
72 final int defaultFileMode = -1;
73
74 when(archiver.getOverrideDirectoryMode()).thenReturn(defaultDirMode);
75 when(archiver.getOverrideFileMode()).thenReturn(defaultFileMode);
76
77 AddDirectoryTask task = new AddDirectoryTask(temporaryFolder);
78 task.setOutputDirectory("dir");
79
80 task.execute(archiver);
81
82
83 verify(archiver).addFileSet(any(FileSet.class));
84 verify(archiver).getOverrideDirectoryMode();
85 verify(archiver).getOverrideFileMode();
86 }
87
88 @Test
89 public void testAddDirectoryShouldAddDirectoryWithDirMode() throws Exception {
90 final int dirMode = Integer.parseInt("777", 8);
91 final int fileMode = Integer.parseInt("777", 8);
92 final int defaultDirMode = -1;
93 final int defaultFileMode = -1;
94
95 when(archiver.getOverrideDirectoryMode()).thenReturn(defaultDirMode);
96 when(archiver.getOverrideFileMode()).thenReturn(defaultFileMode);
97
98 AddDirectoryTask task = new AddDirectoryTask(temporaryFolder);
99 task.setDirectoryMode(dirMode);
100 task.setFileMode(fileMode);
101 task.setOutputDirectory("dir");
102
103 task.execute(archiver);
104
105
106 verify(archiver).addFileSet(any(FileSet.class));
107 verify(archiver).getOverrideDirectoryMode();
108 verify(archiver).getOverrideFileMode();
109 verify(archiver).setDirectoryMode(dirMode);
110 verify(archiver).setFileMode(fileMode);
111 verify(archiver).setDirectoryMode(defaultDirMode);
112 verify(archiver).setFileMode(defaultFileMode);
113 }
114
115 @Test
116 public void testAddDirectoryShouldAddDirectoryWithIncludesAndExcludes() throws Exception {
117 when(archiver.getOverrideDirectoryMode()).thenReturn(-1);
118 when(archiver.getOverrideFileMode()).thenReturn(-1);
119
120 AddDirectoryTask task = new AddDirectoryTask(temporaryFolder);
121 task.setIncludes(Collections.singletonList("**/*.txt"));
122 task.setExcludes(Collections.singletonList("**/README.txt"));
123 task.setOutputDirectory("dir");
124
125 task.execute(archiver);
126
127
128 verify(archiver).addFileSet(any(FileSet.class));
129 verify(archiver).getOverrideDirectoryMode();
130 verify(archiver).getOverrideFileMode();
131 }
132 }