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.Before;
27 import org.junit.Rule;
28 import org.junit.Test;
29 import org.junit.rules.TemporaryFolder;
30 import org.junit.runner.RunWith;
31 import org.mockito.junit.MockitoJUnitRunner;
32
33 import static org.mockito.Mockito.any;
34 import static org.mockito.Mockito.mock;
35 import static org.mockito.Mockito.verify;
36 import static org.mockito.Mockito.when;
37
38 @RunWith(MockitoJUnitRunner.class)
39 public class AddDirectoryTaskTest {
40 @Rule
41 public TemporaryFolder temporaryFolder = new TemporaryFolder();
42
43 private Archiver archiver;
44
45 @Before
46 public void setUp() {
47 this.archiver = mock(Archiver.class);
48 }
49
50 @Test
51 public void testAddDirectory_ShouldNotAddDirectoryIfNonExistent() throws Exception {
52 final int defaultDirMode = -1;
53 final int defaultFileMode = -1;
54
55 when(archiver.getOverrideDirectoryMode()).thenReturn(defaultDirMode);
56 when(archiver.getOverrideFileMode()).thenReturn(defaultFileMode);
57
58 AddDirectoryTask task = new AddDirectoryTask(new File(temporaryFolder.getRoot(), "non-existent"));
59
60 task.execute(archiver);
61
62
63 verify(archiver).getOverrideDirectoryMode();
64 verify(archiver).getOverrideFileMode();
65 }
66
67 @Test
68 public void testAddDirectory_ShouldAddDirectory() throws Exception {
69 final int defaultDirMode = -1;
70 final int defaultFileMode = -1;
71
72 when(archiver.getOverrideDirectoryMode()).thenReturn(defaultDirMode);
73 when(archiver.getOverrideFileMode()).thenReturn(defaultFileMode);
74
75 AddDirectoryTask task = new AddDirectoryTask(temporaryFolder.getRoot());
76 task.setOutputDirectory("dir");
77
78 task.execute(archiver);
79
80
81 verify(archiver).addFileSet(any(FileSet.class));
82 verify(archiver).getOverrideDirectoryMode();
83 verify(archiver).getOverrideFileMode();
84 }
85
86 @Test
87 public void testAddDirectory_ShouldAddDirectoryWithDirMode() throws Exception {
88 final int dirMode = Integer.parseInt("777", 8);
89 final int fileMode = Integer.parseInt("777", 8);
90 final int defaultDirMode = -1;
91 final int defaultFileMode = -1;
92
93 when(archiver.getOverrideDirectoryMode()).thenReturn(defaultDirMode);
94 when(archiver.getOverrideFileMode()).thenReturn(defaultFileMode);
95
96 AddDirectoryTask task = new AddDirectoryTask(temporaryFolder.getRoot());
97 task.setDirectoryMode(dirMode);
98 task.setFileMode(fileMode);
99 task.setOutputDirectory("dir");
100
101 task.execute(archiver);
102
103
104 verify(archiver).addFileSet(any(FileSet.class));
105 verify(archiver).getOverrideDirectoryMode();
106 verify(archiver).getOverrideFileMode();
107 verify(archiver).setDirectoryMode(dirMode);
108 verify(archiver).setFileMode(fileMode);
109 verify(archiver).setDirectoryMode(defaultDirMode);
110 verify(archiver).setFileMode(defaultFileMode);
111 }
112
113 @Test
114 public void testAddDirectory_ShouldAddDirectoryWithIncludesAndExcludes() throws Exception {
115 when(archiver.getOverrideDirectoryMode()).thenReturn(-1);
116 when(archiver.getOverrideFileMode()).thenReturn(-1);
117
118 AddDirectoryTask task = new AddDirectoryTask(temporaryFolder.getRoot());
119 task.setIncludes(Collections.singletonList("**/*.txt"));
120 task.setExcludes(Collections.singletonList("**/README.txt"));
121 task.setOutputDirectory("dir");
122
123 task.execute(archiver);
124
125
126 verify(archiver).addFileSet(any(FileSet.class));
127 verify(archiver).getOverrideDirectoryMode();
128 verify(archiver).getOverrideFileMode();
129 }
130 }