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.io.IOException;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.maven.artifact.Artifact;
27 import org.apache.maven.artifact.DefaultArtifact;
28 import org.apache.maven.artifact.handler.ArtifactHandler;
29 import org.apache.maven.artifact.handler.DefaultArtifactHandler;
30 import org.apache.maven.artifact.versioning.VersionRange;
31 import org.apache.maven.plugin.MojoExecutionException;
32 import org.apache.maven.plugins.dependency.testUtils.stubs.StubSourcesFileMarkerHandler;
33 import org.junit.jupiter.api.BeforeEach;
34 import org.junit.jupiter.api.Test;
35 import org.junit.jupiter.api.io.TempDir;
36
37 import static org.junit.jupiter.api.Assertions.assertFalse;
38 import static org.junit.jupiter.api.Assertions.assertTrue;
39 import static org.junit.jupiter.api.Assertions.fail;
40
41
42
43
44 class TestSourcesMarkerFileHandler {
45 List<Artifact> artifacts = new ArrayList<>();
46
47 private File outputFolder;
48
49 @BeforeEach
50 void setUp(@TempDir File tempDir) {
51
52 ArtifactHandler ah = new DefaultArtifactHandler();
53 VersionRange vr = VersionRange.createFromVersion("1.1");
54 Artifact artifact = new DefaultArtifact("test", "1", vr, Artifact.SCOPE_COMPILE, "jar", "", ah, false);
55 artifacts.add(artifact);
56 artifact = new DefaultArtifact("test", "2", vr, Artifact.SCOPE_PROVIDED, "war", "", ah, false);
57 artifacts.add(artifact);
58 artifact = new DefaultArtifact("test", "3", vr, Artifact.SCOPE_TEST, "sources", "", ah, false);
59 artifacts.add(artifact);
60 artifact = new DefaultArtifact("test", "4", vr, Artifact.SCOPE_RUNTIME, "zip", "", ah, false);
61 artifacts.add(artifact);
62
63 outputFolder = new File(tempDir, "markers");
64 assertFalse(outputFolder.exists());
65 }
66
67 @Test
68 void setMarkerResolved() throws Exception {
69 DefaultFileMarkerHandler handler = new SourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, true);
70 assertFalse(handler.isMarkerSet());
71 handler.setMarker();
72 assertTrue(handler.isMarkerSet());
73 handler.clearMarker();
74 assertFalse(handler.isMarkerSet());
75
76 handler.setMarker();
77 handler.setMarker();
78 assertTrue(handler.isMarkerSet());
79
80 handler.clearMarker();
81 handler.clearMarker();
82 outputFolder.delete();
83 assertFalse(outputFolder.exists());
84 }
85
86 @Test
87 void setMarkerUnresolved() throws Exception {
88 DefaultFileMarkerHandler handler = new SourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, false);
89 assertFalse(handler.isMarkerSet());
90 handler.setMarker();
91 assertTrue(handler.isMarkerSet());
92 handler.clearMarker();
93 assertFalse(handler.isMarkerSet());
94
95 handler.setMarker();
96 handler.setMarker();
97 assertTrue(handler.isMarkerSet());
98
99 handler.clearMarker();
100 handler.clearMarker();
101 outputFolder.delete();
102 assertFalse(outputFolder.exists());
103 }
104
105 @Test
106 void bothMarkers() throws Exception {
107 DefaultFileMarkerHandler handler = new SourcesFileMarkerHandler(artifacts.get(1), this.outputFolder, true);
108 DefaultFileMarkerHandler handler2 = new SourcesFileMarkerHandler(artifacts.get(1), this.outputFolder, false);
109
110 handler.setMarker();
111 assertTrue(handler.isMarkerSet());
112 assertTrue(handler2.isMarkerSet());
113
114 handler2.clearMarker();
115 assertFalse(handler.isMarkerSet());
116 assertFalse(handler2.isMarkerSet());
117 outputFolder.delete();
118 assertFalse(outputFolder.exists());
119 }
120
121 @Test
122 void markerFile() throws Exception {
123 DefaultFileMarkerHandler handler = new SourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, true);
124 DefaultFileMarkerHandler handler2 = new SourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, false);
125
126 File handle = handler.getMarkerFile();
127 File handle2 = handler2.getMarkerFile();
128 assertFalse(handle.exists());
129 assertFalse(handler.isMarkerSet());
130 assertFalse(handle2.exists());
131 assertFalse(handler2.isMarkerSet());
132
133
134 handler.setMarker();
135 assertTrue(handler.isMarkerSet());
136 assertTrue(handle.exists());
137 assertTrue(handler2.isMarkerSet());
138 assertFalse(handle2.exists());
139
140
141
142 handler2.setMarker();
143 assertTrue(handler.isMarkerSet());
144 assertFalse(handle.exists());
145 assertTrue(handler2.isMarkerSet());
146 assertTrue(handle2.exists());
147
148
149 handle.createNewFile();
150
151
152 handle2.delete();
153 assertTrue(handler.isMarkerSet());
154 assertTrue(handler2.isMarkerSet());
155
156
157 handle.delete();
158 assertFalse(handler.isMarkerSet());
159 assertFalse(handler2.isMarkerSet());
160
161 handle.createNewFile();
162 assertTrue(handler.isMarkerSet());
163 assertTrue(handler2.isMarkerSet());
164
165 handler.clearMarker();
166 assertFalse(handle.exists());
167 handler2.clearMarker();
168 assertFalse(handle2.exists());
169
170 handle.delete();
171 handle2.delete();
172
173 outputFolder.delete();
174 assertFalse(outputFolder.exists());
175 }
176
177 @Test
178 void markerTimeStampResolved() throws Exception {
179 doTestMarkerTimeStamp(true);
180 }
181
182 @Test
183 void markerTimeStampUnResolved() throws Exception {
184 doTestMarkerTimeStamp(false);
185 }
186
187 private void doTestMarkerTimeStamp(boolean resolved) throws MojoExecutionException, IOException {
188 File theFile = new File(outputFolder, "theFile.jar");
189 outputFolder.mkdirs();
190 theFile.createNewFile();
191 Artifact theArtifact = artifacts.get(0);
192 theArtifact.setFile(theFile);
193 SourcesFileMarkerHandler resolvedHandler =
194 new SourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, resolved);
195 SourcesFileMarkerHandler unResolvedHandler =
196 new SourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, !resolved);
197
198 assertFalse(resolvedHandler.isMarkerSet());
199 assertFalse(unResolvedHandler.isMarkerSet());
200
201
202 assertTrue(resolvedHandler.isMarkerOlder(theArtifact));
203 assertTrue(unResolvedHandler.isMarkerOlder(theArtifact));
204 resolvedHandler.setMarker();
205 assertFalse(resolvedHandler.isMarkerOlder(theArtifact));
206 assertFalse(unResolvedHandler.isMarkerOlder(theArtifact));
207
208 resolvedHandler.clearMarker();
209 unResolvedHandler.setMarker();
210 assertFalse(resolvedHandler.isMarkerOlder(theArtifact));
211 assertFalse(unResolvedHandler.isMarkerOlder(theArtifact));
212
213 assertTrue(theFile.setLastModified(theFile.lastModified() + 60000));
214 assertTrue(resolvedHandler.isMarkerOlder(theArtifact));
215 assertTrue(unResolvedHandler.isMarkerOlder(theArtifact));
216
217 theFile.delete();
218 resolvedHandler.clearMarker();
219 assertFalse(resolvedHandler.isMarkerSet());
220 }
221
222 @Test
223 void markerFileException() {
224
225 StubSourcesFileMarkerHandler handler =
226 new StubSourcesFileMarkerHandler(artifacts.get(0), this.outputFolder, true);
227 try {
228 handler.setMarker();
229 fail("Expected an Exception here");
230 } catch (MojoExecutionException e) {
231 }
232 }
233
234 @Test
235 void markerFileResolvedSetter() {
236 SourcesFileMarkerHandler handler = new SourcesFileMarkerHandler(null, null, true);
237 assertTrue(handler.isResolved());
238 handler.setResolved(false);
239 assertFalse(handler.isResolved());
240 }
241
242 @Test
243 void nullParent() throws Exception {
244
245
246
247 DefaultFileMarkerHandler handler = new SourcesFileMarkerHandler(null, null, false);
248 handler.setArtifact(artifacts.get(0));
249 handler.setMarker();
250 assertTrue(handler.isMarkerSet());
251 handler.clearMarker();
252 assertFalse(handler.isMarkerSet());
253 }
254
255 @Test
256 void nullParentResolved() throws Exception {
257
258
259
260 DefaultFileMarkerHandler handler = new SourcesFileMarkerHandler(null, null, true);
261 handler.setArtifact(artifacts.get(0));
262 handler.setMarker();
263 assertTrue(handler.isMarkerSet());
264 handler.clearMarker();
265 assertFalse(handler.isMarkerSet());
266 }
267 }