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