1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.dependency.utils.markers;
20
21 import java.io.File;
22 import java.util.ArrayList;
23 import java.util.List;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.artifact.DefaultArtifact;
27 import org.apache.maven.plugin.MojoExecutionException;
28 import org.apache.maven.plugins.dependency.fromConfiguration.ArtifactItem;
29 import org.apache.maven.plugins.dependency.testUtils.stubs.StubUnpackFileMarkerHandler;
30 import org.junit.jupiter.api.BeforeEach;
31 import org.junit.jupiter.api.Test;
32 import org.junit.jupiter.api.io.TempDir;
33
34 import static org.junit.jupiter.api.Assertions.assertFalse;
35 import static org.junit.jupiter.api.Assertions.assertSame;
36 import static org.junit.jupiter.api.Assertions.assertTrue;
37 import static org.junit.jupiter.api.Assertions.fail;
38 import static org.junit.jupiter.api.AssertionsKt.assertNull;
39
40 class TestUnpackMarkerFileHandler {
41 private List<ArtifactItem> artifactItems = new ArrayList<>();
42
43 @TempDir
44 private File outputFolder;
45
46 @BeforeEach
47 void setUp() {
48 ArtifactItem artifactItem = new ArtifactItem(new DefaultArtifact("test", "test", "1", null, "jar", "", null));
49 artifactItems.add(artifactItem);
50
51 artifactItem = new ArtifactItem(new DefaultArtifact("test2", "test2", "2", null, "jar", "", null));
52 artifactItem.setIncludes("**/*.xml");
53 artifactItems.add(artifactItem);
54
55 artifactItem = new ArtifactItem(new DefaultArtifact("test3", "test3", "3", null, "jar", "", null));
56 artifactItem.setExcludes("**/*.class");
57 artifactItems.add(artifactItem);
58
59 artifactItem = new ArtifactItem(new DefaultArtifact("test4", "test4", "4", null, "jar", "", null));
60 artifactItem.setIncludes("**/*.xml");
61 artifactItem.setExcludes("**/*.class");
62 artifactItems.add(artifactItem);
63 }
64
65
66
67
68
69
70 @Test
71 void setMarker() throws Exception {
72 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(artifactItems.get(0), this.outputFolder);
73 assertFalse(handler.isMarkerSet());
74 handler.setMarker();
75 assertTrue(handler.isMarkerSet());
76 handler.clearMarker();
77 assertFalse(handler.isMarkerSet());
78
79 handler.setMarker();
80 assertTrue(handler.isMarkerSet());
81 handler.setMarker();
82 assertTrue(handler.isMarkerSet());
83
84 handler.clearMarker();
85 assertFalse(handler.isMarkerSet());
86 handler.clearMarker();
87 assertFalse(handler.isMarkerSet());
88 }
89
90 @Test
91 void markerFile() throws Exception {
92 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(artifactItems.get(0), this.outputFolder);
93
94 File handle = handler.getMarkerFile();
95 assertFalse(handle.exists());
96 assertFalse(handler.isMarkerSet());
97
98 handler.setMarker();
99 assertTrue(handler.isMarkerSet());
100 assertTrue(handle.exists());
101
102 handle.delete();
103 assertFalse(handler.isMarkerSet());
104
105 handle.createNewFile();
106 assertTrue(handler.isMarkerSet());
107
108 handler.clearMarker();
109 assertFalse(handle.exists());
110 }
111
112 @Test
113 void markerTimeStamp() throws Exception {
114 File theFile = new File(outputFolder, "theFile.jar");
115 theFile.createNewFile();
116 ArtifactItem theArtifactItem = artifactItems.get(0);
117 Artifact theArtifact = theArtifactItem.getArtifact();
118 theArtifact.setFile(theFile);
119 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(theArtifactItem, this.outputFolder);
120 assertFalse(handler.isMarkerSet());
121
122
123 assertTrue(handler.isMarkerOlder(theArtifact));
124 handler.setMarker();
125 assertFalse(handler.isMarkerOlder(theArtifact));
126
127 assertTrue(theFile.setLastModified(theFile.lastModified() + 60000));
128 assertTrue(handler.isMarkerOlder(theArtifact));
129
130 theFile.delete();
131 handler.clearMarker();
132 assertFalse(handler.isMarkerSet());
133 }
134
135 @Test
136 void markerFileException() {
137
138 StubUnpackFileMarkerHandler handler = new StubUnpackFileMarkerHandler(artifactItems.get(0), this.outputFolder);
139 try {
140 handler.setMarker();
141 fail("Expected an Exception here");
142 } catch (MojoExecutionException e) {
143
144 }
145 }
146
147 @Test
148 void getterSetter() {
149 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(null, null);
150 assertNull(handler.getArtifactItem());
151 assertNull(handler.getArtifact());
152 handler.setArtifactItem(artifactItems.get(0));
153 assertSame(artifactItems.get(0), handler.getArtifactItem());
154 assertSame(artifactItems.get(0).getArtifact(), handler.getArtifact());
155
156 assertNull(handler.getMarkerFilesDirectory());
157 handler.setMarkerFilesDirectory(outputFolder);
158 assertSame(outputFolder, handler.getMarkerFilesDirectory());
159 }
160
161 @Test
162 void nullParent() throws Exception {
163
164
165
166 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(null, null);
167 handler.setArtifactItem(artifactItems.get(0));
168 handler.setMarker();
169 assertTrue(handler.isMarkerSet());
170 handler.clearMarker();
171 assertFalse(handler.isMarkerSet());
172 }
173
174 @Test
175 void includesMarker() throws Exception {
176 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(artifactItems.get(1), outputFolder);
177 File handle = handler.getMarkerFile();
178 assertFalse(handle.exists());
179 assertFalse(handler.isMarkerSet());
180
181 handler.setMarker();
182 assertTrue(handler.isMarkerSet());
183 assertTrue(handle.exists());
184 String hashCode = "" + ("**/*.xml".hashCode());
185 assertTrue(handle.getName().contains(hashCode));
186
187 handle.delete();
188 assertFalse(handler.isMarkerSet());
189
190 handle.createNewFile();
191 assertTrue(handler.isMarkerSet());
192
193 handler.clearMarker();
194 assertFalse(handle.exists());
195 }
196
197 @Test
198 void excludesMarker() throws Exception {
199 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(artifactItems.get(2), outputFolder);
200 File handle = handler.getMarkerFile();
201 assertFalse(handle.exists());
202 assertFalse(handler.isMarkerSet());
203
204 handler.setMarker();
205 assertTrue(handler.isMarkerSet());
206 assertTrue(handle.exists());
207 String hashCode = "" + ("**/*.class".hashCode());
208 assertTrue(handle.getName().contains(hashCode));
209
210 handle.delete();
211 assertFalse(handler.isMarkerSet());
212
213 handle.createNewFile();
214 assertTrue(handler.isMarkerSet());
215
216 handler.clearMarker();
217 assertFalse(handle.exists());
218 }
219
220 @Test
221 void includesExcludesMarker() throws Exception {
222 UnpackFileMarkerHandler handler = new UnpackFileMarkerHandler(artifactItems.get(3), outputFolder);
223 File handle = handler.getMarkerFile();
224 assertFalse(handle.exists());
225 assertFalse(handler.isMarkerSet());
226
227 handler.setMarker();
228 assertTrue(handler.isMarkerSet());
229 assertTrue(handle.exists());
230 String hashCode = "" + (0 + "**/*.class".hashCode() + "**/*.xml".hashCode());
231 assertTrue(handle.getName().contains(hashCode));
232
233 handle.delete();
234 assertFalse(handler.isMarkerSet());
235
236 handle.createNewFile();
237 assertTrue(handler.isMarkerSet());
238
239 handler.clearMarker();
240 assertFalse(handle.exists());
241 }
242 }