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