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.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          // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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          // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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         // result of easymock migration, should be assert of expected result instead of verifying methodcalls
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         // result of easymock migration, should be assert of expected result instead of verifying methodcalls
128         verify(archiver).addFileSet(any(FileSet.class));
129         verify(archiver).getOverrideDirectoryMode();
130         verify(archiver).getOverrideFileMode();
131     }
132 }