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