001 package org.apache.maven.repository.legacy;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.io.File;
023
024 import org.apache.maven.artifact.AbstractArtifactComponentTestCase;
025 import org.apache.maven.artifact.Artifact;
026 import org.apache.maven.artifact.factory.ArtifactFactory;
027 import org.apache.maven.artifact.repository.ArtifactRepository;
028 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
029 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
030 import org.apache.maven.repository.legacy.DefaultUpdateCheckManager;
031 import org.codehaus.plexus.logging.Logger;
032 import org.codehaus.plexus.logging.console.ConsoleLogger;
033
034 public class DefaultUpdateCheckManagerTest
035 extends AbstractArtifactComponentTestCase
036 {
037
038 DefaultUpdateCheckManager updateCheckManager;
039
040 @Override
041 protected String component()
042 {
043 return "updateCheckManager";
044 }
045
046 @Override
047 protected void setUp()
048 throws Exception
049 {
050 super.setUp();
051
052 updateCheckManager = new DefaultUpdateCheckManager( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
053 }
054
055 public void testArtifact() throws Exception
056 {
057 ArtifactRepository remoteRepository = remoteRepository();
058
059 ArtifactRepository localRepository = localRepository();
060
061 Artifact a = createArtifact( "a", "0.0.1-SNAPSHOT" );
062 File file = new File( localRepository.getBasedir(),
063 localRepository.pathOf( a ) );
064 file.delete();
065 a.setFile( file );
066
067 File touchFile = updateCheckManager.getTouchfile( a );
068 touchFile.delete();
069
070 assertTrue( updateCheckManager.isUpdateRequired( a, remoteRepository ) );
071
072 file.getParentFile().mkdirs();
073 file.createNewFile();
074 updateCheckManager.touch( a, remoteRepository, null );
075
076 assertFalse( updateCheckManager.isUpdateRequired( a, remoteRepository ) );
077
078 assertNull( updateCheckManager.readLastUpdated( touchFile,
079 updateCheckManager.getRepositoryKey( remoteRepository ) ) );
080
081 assertFalse( updateCheckManager.getTouchfile( a ).exists() );
082 }
083
084 public void testMissingArtifact()
085 throws Exception
086 {
087 ArtifactRepository remoteRepository = remoteRepository();
088
089 ArtifactRepository localRepository = localRepository();
090
091 Artifact a = createArtifact( "a", "0.0.1-SNAPSHOT" );
092 File file = new File( localRepository.getBasedir(),
093 localRepository.pathOf( a ) );
094 file.delete();
095 a.setFile( file );
096
097 File touchFile = updateCheckManager.getTouchfile( a );
098 touchFile.delete();
099
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 }