1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.repository.legacy;
20
21 import javax.inject.Inject;
22
23 import java.io.File;
24
25 import org.apache.maven.artifact.AbstractArtifactComponentTestCase;
26 import org.apache.maven.artifact.Artifact;
27 import org.apache.maven.artifact.factory.ArtifactFactory;
28 import org.apache.maven.artifact.repository.ArtifactRepository;
29 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
30 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
31 import org.codehaus.plexus.logging.Logger;
32 import org.codehaus.plexus.logging.console.ConsoleLogger;
33 import org.junit.jupiter.api.BeforeEach;
34 import org.junit.jupiter.api.Test;
35
36 import static org.junit.jupiter.api.Assertions.assertEquals;
37 import static org.junit.jupiter.api.Assertions.assertFalse;
38 import static org.junit.jupiter.api.Assertions.assertNotNull;
39 import static org.junit.jupiter.api.Assertions.assertNull;
40 import static org.junit.jupiter.api.Assertions.assertTrue;
41
42 @Deprecated
43 class DefaultUpdateCheckManagerTest extends AbstractArtifactComponentTestCase {
44
45 @Inject
46 private ArtifactFactory artifactFactory;
47
48 DefaultUpdateCheckManager updateCheckManager;
49
50 @Override
51 protected String component() {
52 return "updateCheckManager";
53 }
54
55 @BeforeEach
56 @Override
57 public void setUp() throws Exception {
58 super.setUp();
59
60 updateCheckManager = new DefaultUpdateCheckManager(new ConsoleLogger(Logger.LEVEL_DEBUG, "test"));
61 }
62
63 @Test
64 void testArtifact() throws Exception {
65 ArtifactRepository remoteRepository = remoteRepository();
66
67 ArtifactRepository localRepository = localRepository();
68
69 Artifact a = createArtifact("a", "0.0.1-SNAPSHOT");
70 File file = new File(localRepository.getBasedir(), localRepository.pathOf(a));
71 file.delete();
72 a.setFile(file);
73
74 File touchFile = updateCheckManager.getTouchfile(a);
75 touchFile.delete();
76
77 assertTrue(updateCheckManager.isUpdateRequired(a, remoteRepository));
78
79 file.getParentFile().mkdirs();
80 file.createNewFile();
81 updateCheckManager.touch(a, remoteRepository, null);
82
83 assertFalse(updateCheckManager.isUpdateRequired(a, remoteRepository));
84
85 assertNull(
86 updateCheckManager.readLastUpdated(touchFile, updateCheckManager.getRepositoryKey(remoteRepository)));
87
88 assertFalse(updateCheckManager.getTouchfile(a).exists());
89 }
90
91 @Test
92 void testMissingArtifact() throws Exception {
93 ArtifactRepository remoteRepository = remoteRepository();
94
95 ArtifactRepository localRepository = localRepository();
96
97 Artifact a = createArtifact("a", "0.0.1-SNAPSHOT");
98 File file = new File(localRepository.getBasedir(), localRepository.pathOf(a));
99 file.delete();
100 a.setFile(file);
101
102 File touchFile = updateCheckManager.getTouchfile(a);
103 touchFile.delete();
104
105 assertTrue(updateCheckManager.isUpdateRequired(a, remoteRepository));
106
107 updateCheckManager.touch(a, remoteRepository, null);
108
109 assertFalse(updateCheckManager.isUpdateRequired(a, remoteRepository));
110
111 assertFalse(file.exists());
112 assertNotNull(
113 updateCheckManager.readLastUpdated(touchFile, updateCheckManager.getRepositoryKey(remoteRepository)));
114 }
115
116 @Test
117 void testPom() throws Exception {
118 ArtifactRepository remoteRepository = remoteRepository();
119
120 ArtifactRepository localRepository = localRepository();
121
122 Artifact a = createArtifact("a", "0.0.1", "pom");
123 File file = new File(localRepository.getBasedir(), localRepository.pathOf(a));
124 file.delete();
125 a.setFile(file);
126
127 File touchFile = updateCheckManager.getTouchfile(a);
128 touchFile.delete();
129
130 assertTrue(updateCheckManager.isUpdateRequired(a, remoteRepository));
131
132 file.getParentFile().mkdirs();
133 file.createNewFile();
134 updateCheckManager.touch(a, remoteRepository, null);
135
136 assertFalse(updateCheckManager.isUpdateRequired(a, remoteRepository));
137
138 assertNull(
139 updateCheckManager.readLastUpdated(touchFile, updateCheckManager.getRepositoryKey(remoteRepository)));
140
141 assertFalse(updateCheckManager.getTouchfile(a).exists());
142 }
143
144 @Test
145 void testMissingPom() throws Exception {
146 ArtifactRepository remoteRepository = remoteRepository();
147
148 ArtifactRepository localRepository = localRepository();
149
150 Artifact a = createArtifact("a", "0.0.1", "pom");
151 File file = new File(localRepository.getBasedir(), localRepository.pathOf(a));
152 file.delete();
153 a.setFile(file);
154
155 File touchFile = updateCheckManager.getTouchfile(a);
156 touchFile.delete();
157
158 assertTrue(updateCheckManager.isUpdateRequired(a, remoteRepository));
159
160 updateCheckManager.touch(a, remoteRepository, null);
161
162 assertFalse(updateCheckManager.isUpdateRequired(a, remoteRepository));
163
164 assertFalse(file.exists());
165 assertNotNull(
166 updateCheckManager.readLastUpdated(touchFile, updateCheckManager.getRepositoryKey(remoteRepository)));
167 }
168
169 @Test
170 void testMetadata() throws Exception {
171 ArtifactRepository remoteRepository = remoteRepository();
172
173 ArtifactRepository localRepository = localRepository();
174
175 Artifact a = createRemoteArtifact("a", "0.0.1-SNAPSHOT");
176 RepositoryMetadata metadata = new ArtifactRepositoryMetadata(a);
177
178 File file = new File(
179 localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata(metadata, localRepository));
180 file.delete();
181
182 File touchFile = updateCheckManager.getTouchfile(metadata, file);
183 touchFile.delete();
184
185 assertTrue(updateCheckManager.isUpdateRequired(metadata, remoteRepository, file));
186
187 file.getParentFile().mkdirs();
188 file.createNewFile();
189 updateCheckManager.touch(metadata, remoteRepository, file);
190
191 assertFalse(updateCheckManager.isUpdateRequired(metadata, remoteRepository, file));
192
193 assertNotNull(updateCheckManager.readLastUpdated(
194 touchFile, updateCheckManager.getMetadataKey(remoteRepository, file)));
195 }
196
197 @Test
198 void testMissingMetadata() throws Exception {
199 ArtifactRepository remoteRepository = remoteRepository();
200
201 ArtifactRepository localRepository = localRepository();
202
203 Artifact a = createRemoteArtifact("a", "0.0.1-SNAPSHOT");
204 RepositoryMetadata metadata = new ArtifactRepositoryMetadata(a);
205
206 File file = new File(
207 localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata(metadata, localRepository));
208 file.delete();
209
210 File touchFile = updateCheckManager.getTouchfile(metadata, file);
211 touchFile.delete();
212
213 assertTrue(updateCheckManager.isUpdateRequired(metadata, remoteRepository, file));
214
215 updateCheckManager.touch(metadata, remoteRepository, file);
216
217 assertFalse(updateCheckManager.isUpdateRequired(metadata, remoteRepository, file));
218
219 assertNotNull(updateCheckManager.readLastUpdated(
220 touchFile, updateCheckManager.getMetadataKey(remoteRepository, file)));
221 }
222
223 @Test
224 void testArtifactTouchFileName() throws Exception {
225 ArtifactRepository localRepository = localRepository();
226
227 Artifact a = artifactFactory.createArtifactWithClassifier("groupId", "a", "0.0.1-SNAPSHOT", "jar", null);
228 File file = new File(localRepository.getBasedir(), localRepository.pathOf(a));
229 a.setFile(file);
230
231 assertEquals(
232 "a-0.0.1-SNAPSHOT.jar.lastUpdated",
233 updateCheckManager.getTouchfile(a).getName());
234
235 a = artifactFactory.createArtifactWithClassifier("groupId", "a", "0.0.1-SNAPSHOT", "jar", "classifier");
236 file = new File(localRepository.getBasedir(), localRepository.pathOf(a));
237 a.setFile(file);
238
239 assertEquals(
240 "a-0.0.1-SNAPSHOT-classifier.jar.lastUpdated",
241 updateCheckManager.getTouchfile(a).getName());
242 }
243 }