View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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          // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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          // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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         // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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         // result of easymock migration, should be assert of expected result instead of verifying methodcalls
126         verify(archiver).addFileSet(any(FileSet.class));
127         verify(archiver).getOverrideDirectoryMode();
128         verify(archiver).getOverrideFileMode();
129     }
130 }