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