選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

LegacyToDefaultConverterTest.java 47KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064
  1. package org.apache.archiva.converter.artifact;
  2. /*
  3. * Licensed to the Apache Software Foundation (ASF) under one
  4. * or more contributor license agreements. See the NOTICE file
  5. * distributed with this work for additional information
  6. * regarding copyright ownership. The ASF licenses this file
  7. * to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing,
  14. * software distributed under the License is distributed on an
  15. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  16. * KIND, either express or implied. See the License for the
  17. * specific language governing permissions and limitations
  18. * under the License.
  19. */
  20. import junit.framework.TestCase;
  21. import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
  22. import org.apache.archiva.common.utils.FileUtil;
  23. import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
  24. import org.apache.commons.io.FileUtils;
  25. import org.apache.maven.artifact.Artifact;
  26. import org.apache.maven.artifact.factory.ArtifactFactory;
  27. import org.apache.maven.artifact.metadata.ArtifactMetadata;
  28. import org.apache.maven.artifact.repository.ArtifactRepository;
  29. import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
  30. import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
  31. import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
  32. import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
  33. import org.junit.Before;
  34. import org.junit.Test;
  35. import org.junit.runner.RunWith;
  36. import org.springframework.context.ApplicationContext;
  37. import org.springframework.test.context.ContextConfiguration;
  38. import javax.inject.Inject;
  39. import java.io.File;
  40. import java.io.IOException;
  41. import java.nio.charset.Charset;
  42. import java.text.SimpleDateFormat;
  43. import java.util.ArrayList;
  44. import java.util.List;
  45. import java.util.Locale;
  46. import java.util.Map;
  47. import java.util.regex.Matcher;
  48. /**
  49. * LegacyToDefaultConverterTest
  50. */
  51. @RunWith (ArchivaSpringJUnit4ClassRunner.class)
  52. @ContextConfiguration (locations = { "classpath*:/META-INF/spring-context.xml", "classpath:/spring-context.xml" })
  53. public class LegacyToDefaultConverterTest
  54. extends TestCase
  55. {
  56. private ArtifactRepository sourceRepository;
  57. private ArtifactRepository targetRepository;
  58. private ArtifactConverter artifactConverter;
  59. private ArtifactFactory artifactFactory;
  60. @Inject
  61. private PlexusSisuBridge plexusSisuBridge;
  62. @Inject
  63. private ApplicationContext applicationContext;
  64. private static final int SLEEP_MILLIS = 100;
  65. @Before
  66. public void init()
  67. throws Exception
  68. {
  69. super.setUp();
  70. ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class );
  71. Map<String, ArtifactRepositoryLayout> layoutsMap = plexusSisuBridge.lookupMap( ArtifactRepositoryLayout.class );
  72. System.out.println( "hints " + layoutsMap.keySet().toString() );
  73. ArtifactRepositoryLayout layout = plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "legacy" );
  74. File sourceBase = getTestFile( "src/test/source-repository" );
  75. sourceRepository =
  76. factory.createArtifactRepository( "source", sourceBase.toURL().toString(), layout, null, null );
  77. layout = plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "default" );
  78. File targetBase = getTestFile( "target/test-target-repository" );
  79. copyDirectoryStructure( getTestFile( "src/test/target-repository" ), targetBase );
  80. targetRepository =
  81. factory.createArtifactRepository( "target", targetBase.toURL().toString(), layout, null, null );
  82. artifactConverter =
  83. applicationContext.getBean( "artifactConverter#legacy-to-default", ArtifactConverter.class );
  84. artifactConverter.clearWarnings();
  85. artifactFactory = (ArtifactFactory) plexusSisuBridge.lookup( ArtifactFactory.class );
  86. }
  87. public static File getTestFile( String path )
  88. {
  89. return new File( FileUtil.getBasedir(), path );
  90. }
  91. private void copyDirectoryStructure( File sourceDirectory, File destinationDirectory )
  92. throws IOException
  93. {
  94. if ( !sourceDirectory.exists() )
  95. {
  96. throw new IOException( "Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")." );
  97. }
  98. File[] files = sourceDirectory.listFiles();
  99. String sourcePath = sourceDirectory.getAbsolutePath();
  100. for ( int i = 0; i < files.length; i++ )
  101. {
  102. File file = files[i];
  103. String dest = file.getAbsolutePath();
  104. dest = dest.substring( sourcePath.length() + 1 );
  105. File destination = new File( destinationDirectory, dest );
  106. if ( file.isFile() )
  107. {
  108. destination = destination.getParentFile();
  109. FileUtils.copyFileToDirectory( file, destination );
  110. }
  111. else if ( file.isDirectory() )
  112. {
  113. if ( !".svn".equals( file.getName() ) )
  114. {
  115. if ( !destination.exists() && !destination.mkdirs() )
  116. {
  117. throw new IOException(
  118. "Could not create destination directory '" + destination.getAbsolutePath() + "'." );
  119. }
  120. copyDirectoryStructure( file, destination );
  121. }
  122. }
  123. else
  124. {
  125. throw new IOException( "Unknown file type: " + file.getAbsolutePath() );
  126. }
  127. }
  128. }
  129. @Test
  130. public void testV4PomConvert()
  131. throws Exception
  132. {
  133. // test that it is copied as is
  134. Artifact artifact = createArtifact( "test", "v4artifact", "1.0.0" );
  135. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  136. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  137. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  138. artifactMetadataFile.delete();
  139. ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  140. File versionMetadataFile = new File( targetRepository.getBasedir(),
  141. targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
  142. versionMetadataFile.delete();
  143. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  144. artifactFile.delete();
  145. artifactConverter.convert( artifact, targetRepository );
  146. checkSuccess( artifactConverter );
  147. assertTrue( "Check artifact created", artifactFile.exists() );
  148. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  149. artifact = createPomArtifact( artifact );
  150. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  151. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  152. assertTrue( "Check POM created", pomFile.exists() );
  153. compareFiles( sourcePomFile, pomFile );
  154. assertTrue( "Check artifact metadata created", artifactMetadataFile.exists() );
  155. File expectedMetadataFile = getTestFile( "src/test/expected-files/v4-artifact-metadata.xml" );
  156. compareFiles( expectedMetadataFile, artifactMetadataFile );
  157. assertTrue( "Check snapshot metadata created", versionMetadataFile.exists() );
  158. expectedMetadataFile = getTestFile( "src/test/expected-files/v4-version-metadata.xml" );
  159. compareFiles( expectedMetadataFile, versionMetadataFile );
  160. }
  161. @Test
  162. public void testV3PomConvert()
  163. throws Exception
  164. {
  165. // test that the pom is coverted
  166. Artifact artifact = createArtifact( "test", "v3artifact", "1.0.0" );
  167. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  168. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  169. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  170. artifactMetadataFile.delete();
  171. ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  172. File versionMetadataFile = new File( targetRepository.getBasedir(),
  173. targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
  174. versionMetadataFile.delete();
  175. artifactConverter.convert( artifact, targetRepository );
  176. checkSuccess( artifactConverter );
  177. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  178. assertTrue( "Check artifact created", artifactFile.exists() );
  179. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  180. artifact = createPomArtifact( artifact );
  181. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  182. File expectedPomFile = getTestFile( "src/test/expected-files/converted-v3.pom" );
  183. assertTrue( "Check POM created", pomFile.exists() );
  184. compareFiles( expectedPomFile, pomFile );
  185. assertTrue( "Check artifact metadata created", artifactMetadataFile.exists() );
  186. File expectedMetadataFile = getTestFile( "src/test/expected-files/v3-artifact-metadata.xml" );
  187. compareFiles( expectedMetadataFile, artifactMetadataFile );
  188. assertTrue( "Check snapshot metadata created", versionMetadataFile.exists() );
  189. expectedMetadataFile = getTestFile( "src/test/expected-files/v3-version-metadata.xml" );
  190. compareFiles( expectedMetadataFile, versionMetadataFile );
  191. }
  192. @Test
  193. public void testV3PomConvertWithRelocation()
  194. throws Exception
  195. {
  196. Artifact artifact = createArtifact( "test", "relocated-v3artifact", "1.0.0" );
  197. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  198. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  199. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  200. artifactMetadataFile.delete();
  201. ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  202. File versionMetadataFile = new File( targetRepository.getBasedir(),
  203. targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
  204. versionMetadataFile.delete();
  205. artifactConverter.convert( artifact, targetRepository );
  206. //checkSuccess(); --> commented until MNG-2100 is fixed
  207. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  208. assertTrue( "Check if relocated artifact created", artifactFile.exists() );
  209. assertTrue( "Check if relocated artifact matches",
  210. FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  211. Artifact pomArtifact = createArtifact( "relocated-test", "relocated-v3artifact", "1.0.0", "1.0.0", "pom" );
  212. File pomFile = getTestFile( "src/test/expected-files/" + targetRepository.pathOf( pomArtifact ) );
  213. File testFile = getTestFile( "target/test-target-repository/" + targetRepository.pathOf( pomArtifact ) );
  214. compareFiles( pomFile, testFile );
  215. Artifact orig = createArtifact( "test", "relocated-v3artifact", "1.0.0", "1.0.0", "pom" );
  216. artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( orig ) );
  217. assertTrue( "Check if relocation artifact pom is created", artifactFile.exists() );
  218. testFile = getTestFile( "src/test/expected-files/" + targetRepository.pathOf( orig ) );
  219. compareFiles( artifactFile, testFile );
  220. }
  221. @Test
  222. public void testV3PomWarningsOnConvert()
  223. throws Exception
  224. {
  225. // test that the pom is converted but that warnings are reported
  226. Artifact artifact = createArtifact( "test", "v3-warnings-artifact", "1.0.0" );
  227. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  228. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  229. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  230. artifactMetadataFile.delete();
  231. ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  232. File versionMetadataFile = new File( targetRepository.getBasedir(),
  233. targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
  234. versionMetadataFile.delete();
  235. artifactConverter.convert( artifact, targetRepository );
  236. checkWarnings( artifactConverter, 2 );
  237. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  238. assertTrue( "Check artifact created", artifactFile.exists() );
  239. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  240. artifact = createPomArtifact( artifact );
  241. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  242. File expectedPomFile = getTestFile( "src/test/expected-files/converted-v3-warnings.pom" );
  243. assertTrue( "Check POM created", pomFile.exists() );
  244. compareFiles( expectedPomFile, pomFile );
  245. // TODO: check 2 warnings (extend and versions) matched on i18n key
  246. }
  247. private void doTestV4SnapshotPomConvert( String version, String expectedMetadataFileName )
  248. throws Exception
  249. {
  250. // test that it is copied as is
  251. Artifact artifact = createArtifact( "test", "v4artifact", version );
  252. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  253. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  254. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  255. artifactMetadataFile.delete();
  256. ArtifactMetadata snapshotMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  257. File snapshotMetadataFile = new File( targetRepository.getBasedir(),
  258. targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
  259. snapshotMetadataFile.delete();
  260. artifactConverter.convert( artifact, targetRepository );
  261. checkSuccess( artifactConverter );
  262. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  263. assertTrue( "Check artifact created", artifactFile.exists() );
  264. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  265. artifact = createPomArtifact( artifact );
  266. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  267. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  268. assertTrue( "Check POM created", pomFile.exists() );
  269. compareFiles( sourcePomFile, pomFile );
  270. assertTrue( "Check artifact metadata created", artifactMetadataFile.exists() );
  271. File expectedMetadataFile = getTestFile( "src/test/expected-files/v4-snapshot-artifact-metadata.xml" );
  272. compareFiles( expectedMetadataFile, artifactMetadataFile );
  273. assertTrue( "Check snapshot metadata created", snapshotMetadataFile.exists() );
  274. expectedMetadataFile = getTestFile( expectedMetadataFileName );
  275. compareFiles( expectedMetadataFile, snapshotMetadataFile );
  276. }
  277. @Test
  278. public void testV3SnapshotPomConvert()
  279. throws Exception
  280. {
  281. // test that the pom is coverted
  282. Artifact artifact = createArtifact( "test", "v3artifact", "1.0.0-SNAPSHOT" );
  283. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  284. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  285. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  286. artifactMetadataFile.delete();
  287. ArtifactMetadata snapshotMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  288. File snapshotMetadataFile = new File( targetRepository.getBasedir(),
  289. targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
  290. snapshotMetadataFile.delete();
  291. artifactConverter.convert( artifact, targetRepository );
  292. checkSuccess( artifactConverter );
  293. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  294. assertTrue( "Check artifact created", artifactFile.exists() );
  295. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  296. artifact = createPomArtifact( artifact );
  297. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  298. File expectedPomFile = getTestFile( "src/test/expected-files/converted-v3-snapshot.pom" );
  299. assertTrue( "Check POM created", pomFile.exists() );
  300. compareFiles( expectedPomFile, pomFile );
  301. assertTrue( "Check artifact metadata created", artifactMetadataFile.exists() );
  302. File expectedMetadataFile = getTestFile( "src/test/expected-files/v3-snapshot-artifact-metadata.xml" );
  303. compareFiles( expectedMetadataFile, artifactMetadataFile );
  304. assertTrue( "Check snapshot metadata created", snapshotMetadataFile.exists() );
  305. expectedMetadataFile = getTestFile( "src/test/expected-files/v3-snapshot-metadata.xml" );
  306. compareFiles( expectedMetadataFile, snapshotMetadataFile );
  307. }
  308. @Test
  309. public void testV4SnapshotPomConvert()
  310. throws Exception
  311. {
  312. doTestV4SnapshotPomConvert( "1.0.0-SNAPSHOT", "src/test/expected-files/v4-snapshot-metadata.xml" );
  313. assertTrue( true );
  314. }
  315. @Test
  316. public void testV4TimestampedSnapshotPomConvert()
  317. throws Exception
  318. {
  319. doTestV4SnapshotPomConvert( "1.0.0-20060111.120115-1",
  320. "src/test/expected-files/v4-timestamped-snapshot-metadata.xml" );
  321. assertTrue( true );
  322. }
  323. @Test
  324. public void testMavenOnePluginConversion()
  325. throws Exception
  326. {
  327. Artifact artifact =
  328. createArtifact( "org.apache.maven.plugins", "maven-foo-plugin", "1.0", "1.0", "maven-plugin" );
  329. artifact.setFile(
  330. new File( FileUtil.getBasedir(), "src/test/source-repository/test/plugins/maven-foo-plugin-1.0.jar" ) );
  331. artifactConverter.convert( artifact, targetRepository );
  332. // There is a warning but I can't figure out how to look at it. Eyeballing the results it appears
  333. // the plugin is being coverted correctly.
  334. //checkSuccess();
  335. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  336. assertTrue( "Check artifact created", artifactFile.exists() );
  337. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  338. /*
  339. The POM isn't needed for Maven 1.x plugins but the raw conversion for
  340. artifact = createPomArtifact( artifact );
  341. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  342. File expectedPomFile = getTestFile( "src/test/expected-files/maven-foo-plugin-1.0.pom" );
  343. assertTrue( "Check POM created", pomFile.exists() );
  344. compareFiles( expectedPomFile, pomFile );
  345. */
  346. }
  347. @Test
  348. public void testV3TimestampedSnapshotPomConvert()
  349. throws Exception
  350. {
  351. // test that the pom is coverted
  352. Artifact artifact = createArtifact( "test", "v3artifact", "1.0.0-20060105.130101-3" );
  353. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  354. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  355. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  356. artifactMetadataFile.delete();
  357. ArtifactMetadata snapshotMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  358. File snapshotMetadataFile = new File( targetRepository.getBasedir(),
  359. targetRepository.pathOfRemoteRepositoryMetadata( snapshotMetadata ) );
  360. snapshotMetadataFile.delete();
  361. artifactConverter.convert( artifact, targetRepository );
  362. checkSuccess( artifactConverter );
  363. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  364. assertTrue( "Check artifact created", artifactFile.exists() );
  365. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  366. artifact = createPomArtifact( artifact );
  367. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  368. File expectedPomFile = getTestFile( "src/test/expected-files/converted-v3-timestamped-snapshot.pom" );
  369. assertTrue( "Check POM created", pomFile.exists() );
  370. compareFiles( expectedPomFile, pomFile );
  371. assertTrue( "Check artifact snapshotMetadata created", artifactMetadataFile.exists() );
  372. File expectedMetadataFile = getTestFile( "src/test/expected-files/v3-snapshot-artifact-metadata.xml" );
  373. compareFiles( expectedMetadataFile, artifactMetadataFile );
  374. assertTrue( "Check snapshot snapshotMetadata created", snapshotMetadataFile.exists() );
  375. expectedMetadataFile = getTestFile( "src/test/expected-files/v3-timestamped-snapshot-metadata.xml" );
  376. compareFiles( expectedMetadataFile, snapshotMetadataFile );
  377. }
  378. @Test
  379. public void testNoPomConvert()
  380. throws Exception
  381. {
  382. // test that a POM is not created when there was none at the source
  383. Artifact artifact = createArtifact( "test", "noPomArtifact", "1.0.0" );
  384. artifactConverter.convert( artifact, targetRepository );
  385. checkWarnings( artifactConverter, 1 );
  386. assertHasWarningReason( artifactConverter, Messages.getString( "warning.missing.pom" ) );
  387. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  388. assertTrue( "Check artifact created", artifactFile.exists() );
  389. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  390. artifact = createPomArtifact( artifact );
  391. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  392. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  393. assertFalse( "Check no POM created", pomFile.exists() );
  394. assertFalse( "No source POM", sourcePomFile.exists() );
  395. }
  396. @Test
  397. public void testIncorrectSourceChecksumMd5()
  398. throws Exception
  399. {
  400. // test that it fails when the source md5 is wrong
  401. Artifact artifact = createArtifact( "test", "incorrectMd5Artifact", "1.0.0" );
  402. File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  403. file.delete();
  404. artifactConverter.convert( artifact, targetRepository );
  405. checkWarnings( artifactConverter, 2 );
  406. assertHasWarningReason( artifactConverter, Messages.getString( "failure.incorrect.md5" ) );
  407. assertFalse( "Check artifact not created", file.exists() );
  408. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  409. File metadataFile =
  410. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  411. assertFalse( "Check metadata not created", metadataFile.exists() );
  412. }
  413. @Test
  414. public void testIncorrectSourceChecksumSha1()
  415. throws Exception
  416. {
  417. // test that it fails when the source sha1 is wrong
  418. Artifact artifact = createArtifact( "test", "incorrectSha1Artifact", "1.0.0" );
  419. File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  420. file.delete();
  421. artifactConverter.convert( artifact, targetRepository );
  422. checkWarnings( artifactConverter, 2 );
  423. assertHasWarningReason( artifactConverter, Messages.getString( "failure.incorrect.sha1" ) );
  424. assertFalse( "Check artifact not created", file.exists() );
  425. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  426. File metadataFile =
  427. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  428. assertFalse( "Check metadata not created", metadataFile.exists() );
  429. }
  430. @Test
  431. public void testUnmodifiedArtifact()
  432. throws Exception, InterruptedException
  433. {
  434. // test the unmodified artifact is untouched
  435. Artifact artifact = createArtifact( "test", "unmodified-artifact", "1.0.0" );
  436. Artifact pomArtifact = createPomArtifact( artifact );
  437. File sourceFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  438. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( pomArtifact ) );
  439. File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  440. File targetPomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) );
  441. assertTrue( "Check target file exists", targetFile.exists() );
  442. assertTrue( "Check target POM exists", targetPomFile.exists() );
  443. sourceFile.setLastModified( System.currentTimeMillis() );
  444. sourcePomFile.setLastModified( System.currentTimeMillis() );
  445. long origTime = targetFile.lastModified();
  446. long origPomTime = targetPomFile.lastModified();
  447. // Need to guarantee last modified is not equal
  448. Thread.sleep( SLEEP_MILLIS );
  449. artifactConverter.convert( artifact, targetRepository );
  450. checkSuccess( artifactConverter );
  451. compareFiles( sourceFile, targetFile );
  452. compareFiles( sourcePomFile, targetPomFile );
  453. assertEquals( "Check artifact unmodified", origTime, targetFile.lastModified() );
  454. assertEquals( "Check POM unmodified", origPomTime, targetPomFile.lastModified() );
  455. }
  456. @Test
  457. public void testModifedArtifactFails()
  458. throws Exception
  459. {
  460. // test that it fails when the source artifact has changed and is different to the existing artifact in the
  461. // target repository
  462. Artifact artifact = createArtifact( "test", "modified-artifact", "1.0.0" );
  463. Artifact pomArtifact = createPomArtifact( artifact );
  464. File sourceFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  465. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( pomArtifact ) );
  466. File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  467. File targetPomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) );
  468. assertTrue( "Check target file exists", targetFile.exists() );
  469. assertTrue( "Check target POM exists", targetPomFile.exists() );
  470. sourceFile.setLastModified( System.currentTimeMillis() );
  471. sourcePomFile.setLastModified( System.currentTimeMillis() );
  472. long origTime = targetFile.lastModified();
  473. long origPomTime = targetPomFile.lastModified();
  474. // Need to guarantee last modified is not equal
  475. Thread.sleep( SLEEP_MILLIS );
  476. artifactConverter.convert( artifact, targetRepository );
  477. checkWarnings( artifactConverter, 2 );
  478. assertHasWarningReason( artifactConverter, Messages.getString( "failure.target.already.exists" ) );
  479. assertEquals( "Check unmodified", origTime, targetFile.lastModified() );
  480. assertEquals( "Check unmodified", origPomTime, targetPomFile.lastModified() );
  481. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  482. File metadataFile =
  483. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  484. assertFalse( "Check metadata not created", metadataFile.exists() );
  485. }
  486. @Test
  487. public void testForcedUnmodifiedArtifact()
  488. throws Exception
  489. {
  490. // test unmodified artifact is still converted when set to force
  491. artifactConverter =
  492. applicationContext.getBean( "artifactConverter#force-repository-converter", ArtifactConverter.class );
  493. Artifact artifact = createArtifact( "test", "unmodified-artifact", "1.0.0" );
  494. Artifact pomArtifact = createPomArtifact( artifact );
  495. File sourceFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  496. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( pomArtifact ) );
  497. File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  498. File targetPomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) );
  499. SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd", Locale.getDefault() );
  500. long origTime = dateFormat.parse( "2006-03-03" ).getTime();
  501. targetFile.setLastModified( origTime );
  502. targetPomFile.setLastModified( origTime );
  503. sourceFile.setLastModified( dateFormat.parse( "2006-01-01" ).getTime() );
  504. sourcePomFile.setLastModified( dateFormat.parse( "2006-02-02" ).getTime() );
  505. artifactConverter.convert( artifact, targetRepository );
  506. checkSuccess( artifactConverter );
  507. compareFiles( sourceFile, targetFile );
  508. compareFiles( sourcePomFile, targetPomFile );
  509. assertFalse( "Check modified", origTime == targetFile.lastModified() );
  510. assertFalse( "Check modified", origTime == targetPomFile.lastModified() );
  511. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  512. File metadataFile =
  513. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  514. assertTrue( "Check metadata created", metadataFile.exists() );
  515. }
  516. @Test
  517. public void testDryRunSuccess()
  518. throws Exception
  519. {
  520. // test dry run does nothing on a run that will be successful, and returns success
  521. artifactConverter =
  522. applicationContext.getBean( "artifactConverter#dryrun-repository-converter", ArtifactConverter.class );
  523. Artifact artifact = createArtifact( "test", "dryrun-artifact", "1.0.0" );
  524. Artifact pomArtifact = createPomArtifact( artifact );
  525. File sourceFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  526. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( pomArtifact ) );
  527. File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  528. File targetPomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) );
  529. // clear warning before test related to MRM-1638
  530. artifactConverter.clearWarnings();
  531. artifactConverter.convert( artifact, targetRepository );
  532. checkSuccess( artifactConverter );
  533. assertTrue( "Check source file exists", sourceFile.exists() );
  534. assertTrue( "Check source POM exists", sourcePomFile.exists() );
  535. assertFalse( "Check target file doesn't exist", targetFile.exists() );
  536. assertFalse( "Check target POM doesn't exist", targetPomFile.exists() );
  537. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  538. File metadataFile =
  539. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  540. assertFalse( "Check metadata not created", metadataFile.exists() );
  541. }
  542. @Test
  543. public void testDryRunFailure()
  544. throws Exception
  545. {
  546. // test dry run does nothing on a run that will fail, and returns failure
  547. artifactConverter =
  548. applicationContext.getBean( "artifactConverter#dryrun-repository-converter", ArtifactConverter.class );
  549. Artifact artifact = createArtifact( "test", "modified-artifact", "1.0.0" );
  550. Artifact pomArtifact = createPomArtifact( artifact );
  551. File sourceFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  552. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( pomArtifact ) );
  553. File targetFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  554. File targetPomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( pomArtifact ) );
  555. assertTrue( "Check target file exists", targetFile.exists() );
  556. assertTrue( "Check target POM exists", targetPomFile.exists() );
  557. sourceFile.setLastModified( System.currentTimeMillis() );
  558. sourcePomFile.setLastModified( System.currentTimeMillis() );
  559. long origTime = targetFile.lastModified();
  560. long origPomTime = targetPomFile.lastModified();
  561. // Need to guarantee last modified is not equal
  562. Thread.sleep( SLEEP_MILLIS );
  563. // clear warning before test related to MRM-1638
  564. artifactConverter.clearWarnings();
  565. artifactConverter.convert( artifact, targetRepository );
  566. checkWarnings( artifactConverter, 2 );
  567. assertHasWarningReason( artifactConverter, Messages.getString( "failure.target.already.exists" ) );
  568. assertEquals( "Check unmodified", origTime, targetFile.lastModified() );
  569. assertEquals( "Check unmodified", origPomTime, targetPomFile.lastModified() );
  570. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  571. File metadataFile =
  572. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  573. assertFalse( "Check metadata not created", metadataFile.exists() );
  574. }
  575. @Test
  576. public void testRollbackArtifactCreated()
  577. throws Exception
  578. {
  579. // test rollback can remove a created artifact, including checksums
  580. Artifact artifact = createArtifact( "test", "rollback-created-artifact", "1.0.0" );
  581. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  582. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  583. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  584. FileUtils.deleteDirectory( artifactMetadataFile.getParentFile() );
  585. ArtifactMetadata versionMetadata = new SnapshotArtifactRepositoryMetadata( artifact );
  586. File versionMetadataFile = new File( targetRepository.getBasedir(),
  587. targetRepository.pathOfRemoteRepositoryMetadata( versionMetadata ) );
  588. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  589. artifactConverter.convert( artifact, targetRepository );
  590. checkWarnings( artifactConverter, 2 );
  591. boolean found = false;
  592. String pattern = "^" + Messages.getString( "invalid.source.pom" ).replaceFirst( "\\{0\\}", ".*" ) + "$";
  593. for ( List<String> messages : artifactConverter.getWarnings().values() )
  594. {
  595. for ( String message : messages )
  596. {
  597. if ( message.matches( pattern ) )
  598. {
  599. found = true;
  600. break;
  601. }
  602. }
  603. if ( found )
  604. {
  605. break;
  606. }
  607. }
  608. assertTrue( "Check failure message.", found );
  609. assertFalse( "check artifact rolled back", artifactFile.exists() );
  610. assertFalse( "check metadata rolled back", artifactMetadataFile.exists() );
  611. assertFalse( "check metadata rolled back", versionMetadataFile.exists() );
  612. }
  613. @Test
  614. public void testMultipleArtifacts()
  615. throws Exception
  616. {
  617. // test multiple artifacts are converted
  618. List<Artifact> artifacts = new ArrayList<>();
  619. artifacts.add( createArtifact( "test", "artifact-one", "1.0.0" ) );
  620. artifacts.add( createArtifact( "test", "artifact-two", "1.0.0" ) );
  621. artifacts.add( createArtifact( "test", "artifact-three", "1.0.0" ) );
  622. for ( Artifact artifact : artifacts )
  623. {
  624. artifactConverter.convert( artifact, targetRepository );
  625. checkSuccess( artifactConverter );
  626. }
  627. for ( Artifact artifact : artifacts )
  628. {
  629. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  630. assertTrue( "Check artifact created", artifactFile.exists() );
  631. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  632. artifact = createPomArtifact( artifact );
  633. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  634. File expectedPomFile =
  635. getTestFile( "src/test/expected-files/converted-" + artifact.getArtifactId() + ".pom" );
  636. assertTrue( "Check POM created", pomFile.exists() );
  637. compareFiles( expectedPomFile, pomFile );
  638. }
  639. }
  640. @Test
  641. public void testInvalidSourceArtifactMetadata()
  642. throws Exception
  643. {
  644. // test artifact is not converted when source metadata is invalid, and returns failure
  645. createModernSourceRepository();
  646. Artifact artifact = createArtifact( "test", "incorrectArtifactMetadata", "1.0.0" );
  647. File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  648. file.delete();
  649. artifactConverter.convert( artifact, targetRepository );
  650. checkWarnings( artifactConverter, 2 );
  651. assertHasWarningReason( artifactConverter,
  652. Messages.getString( "failure.incorrect.artifactMetadata.versions" ) );
  653. assertFalse( "Check artifact not created", file.exists() );
  654. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  655. File metadataFile =
  656. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  657. assertFalse( "Check metadata not created", metadataFile.exists() );
  658. }
  659. @Test
  660. public void testInvalidSourceSnapshotMetadata()
  661. throws Exception
  662. {
  663. // test artifact is not converted when source snapshot metadata is invalid and returns failure
  664. createModernSourceRepository();
  665. Artifact artifact = createArtifact( "test", "incorrectSnapshotMetadata", "1.0.0-20060102.030405-6" );
  666. File file = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  667. file.delete();
  668. artifactConverter.convert( artifact, targetRepository );
  669. checkWarnings( artifactConverter, 2 );
  670. assertHasWarningReason( artifactConverter,
  671. Messages.getString( "failure.incorrect.snapshotMetadata.snapshot" ) );
  672. assertFalse( "Check artifact not created", file.exists() );
  673. ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact );
  674. File metadataFile =
  675. new File( targetRepository.getBasedir(), targetRepository.pathOfRemoteRepositoryMetadata( metadata ) );
  676. assertFalse( "Check metadata not created", metadataFile.exists() );
  677. }
  678. @Test
  679. public void testMergeArtifactMetadata()
  680. throws Exception
  681. {
  682. // test artifact level metadata is merged when it already exists on successful conversion
  683. Artifact artifact = createArtifact( "test", "newversion-artifact", "1.0.1" );
  684. artifactConverter.convert( artifact, targetRepository );
  685. checkSuccess( artifactConverter );
  686. File artifactFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  687. assertTrue( "Check artifact created", artifactFile.exists() );
  688. assertTrue( "Check artifact matches", FileUtils.contentEquals( artifactFile, artifact.getFile() ) );
  689. artifact = createPomArtifact( artifact );
  690. File pomFile = new File( targetRepository.getBasedir(), targetRepository.pathOf( artifact ) );
  691. File sourcePomFile = new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) );
  692. assertTrue( "Check POM created", pomFile.exists() );
  693. compareFiles( sourcePomFile, pomFile );
  694. ArtifactMetadata artifactMetadata = new ArtifactRepositoryMetadata( artifact );
  695. File artifactMetadataFile = new File( targetRepository.getBasedir(),
  696. targetRepository.pathOfRemoteRepositoryMetadata( artifactMetadata ) );
  697. assertTrue( "Check artifact metadata created", artifactMetadataFile.exists() );
  698. File expectedMetadataFile = getTestFile( "src/test/expected-files/newversion-artifact-metadata.xml" );
  699. compareFiles( expectedMetadataFile, artifactMetadataFile );
  700. }
  701. @Test
  702. public void testSourceAndTargetRepositoriesMatch()
  703. throws Exception
  704. {
  705. // test that it fails if the same
  706. ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class );
  707. sourceRepository =
  708. factory.createArtifactRepository( "source", targetRepository.getUrl(), targetRepository.getLayout(), null,
  709. null );
  710. Artifact artifact = createArtifact( "test", "repository-artifact", "1.0" );
  711. try
  712. {
  713. artifactConverter.convert( artifact, targetRepository );
  714. fail( "Should have failed trying to convert within the same repository" );
  715. }
  716. catch ( ArtifactConversionException e )
  717. {
  718. // expected
  719. assertEquals( "check message", Messages.getString( "exception.repositories.match" ), e.getMessage() );
  720. assertNull( "Check no additional cause", e.getCause() );
  721. }
  722. }
  723. private Artifact createArtifact( String groupId, String artifactId, String version )
  724. {
  725. Matcher matcher = Artifact.VERSION_FILE_PATTERN.matcher( version );
  726. String baseVersion;
  727. if ( matcher.matches() )
  728. {
  729. baseVersion = matcher.group( 1 ) + "-SNAPSHOT";
  730. }
  731. else
  732. {
  733. baseVersion = version;
  734. }
  735. return createArtifact( groupId, artifactId, baseVersion, version, "jar" );
  736. }
  737. private Artifact createArtifact( String groupId, String artifactId, String baseVersion, String version,
  738. String type )
  739. {
  740. Artifact artifact = artifactFactory.createArtifact( groupId, artifactId, version, null, type );
  741. artifact.setBaseVersion( baseVersion );
  742. artifact.setRepository( sourceRepository );
  743. artifact.setFile( new File( sourceRepository.getBasedir(), sourceRepository.pathOf( artifact ) ) );
  744. return artifact;
  745. }
  746. private Artifact createPomArtifact( Artifact artifact )
  747. {
  748. return createArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getBaseVersion(),
  749. artifact.getVersion(), "pom" );
  750. }
  751. private static void compareFiles( File expectedPomFile, File pomFile )
  752. throws IOException
  753. {
  754. String expectedContent = normalizeString(
  755. org.apache.commons.io.FileUtils.readFileToString( expectedPomFile, Charset.defaultCharset() ) );
  756. String targetContent =
  757. normalizeString( org.apache.commons.io.FileUtils.readFileToString( pomFile, Charset.defaultCharset() ) );
  758. assertEquals( "Check file match between " + expectedPomFile + " and " + pomFile, expectedContent,
  759. targetContent );
  760. }
  761. private static String normalizeString( String path )
  762. {
  763. return path.trim().replaceAll( "\r\n", "\n" ).replace( '\r', '\n' ).replaceAll( "<\\?xml .+\\?>",
  764. "" ).replaceAll( "^\\s+", "" );
  765. }
  766. private void checkSuccess( ArtifactConverter converter )
  767. {
  768. assertNotNull( "Warnings should never be null.", converter.getWarnings() );
  769. assertEquals( "Should have no warnings.", 0, countWarningMessages( converter ) );
  770. }
  771. private void checkWarnings( ArtifactConverter converter, int count )
  772. {
  773. assertNotNull( "Warnings should never be null.", converter.getWarnings() );
  774. assertEquals( "Should have some warnings.", count, countWarningMessages( converter ) );
  775. }
  776. private int countWarningMessages( ArtifactConverter converter )
  777. {
  778. int count = 0;
  779. for ( List<String> values : converter.getWarnings().values() )
  780. {
  781. count += values.size();
  782. }
  783. return count;
  784. }
  785. private void assertHasWarningReason( ArtifactConverter converter, String reason )
  786. {
  787. assertNotNull( "Warnings should never be null.", converter.getWarnings() );
  788. assertTrue( "Expecting 1 or more Warnings", countWarningMessages( converter ) > 0 );
  789. for ( List<String> messages : converter.getWarnings().values() )
  790. {
  791. if ( messages.contains( reason ) )
  792. {
  793. /* No need to check any further */
  794. return;
  795. }
  796. }
  797. /* didn't find it. */
  798. for ( Map.Entry<Artifact, List<String>> entry : converter.getWarnings().entrySet() )
  799. {
  800. Artifact artifact = (Artifact) entry.getKey();
  801. System.out.println(
  802. "-Artifact: " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + artifact.getVersion() );
  803. List<String> messages = entry.getValue();
  804. for ( String message : messages )
  805. {
  806. System.out.println( " " + message );
  807. }
  808. }
  809. fail( "Unable to find message <" + reason + "> in warnings." );
  810. }
  811. private void createModernSourceRepository()
  812. throws Exception
  813. {
  814. ArtifactRepositoryFactory factory = plexusSisuBridge.lookup( ArtifactRepositoryFactory.class );
  815. ArtifactRepositoryLayout layout = plexusSisuBridge.lookup( ArtifactRepositoryLayout.class, "default" );
  816. File sourceBase = getTestFile( "src/test/source-modern-repository" );
  817. sourceRepository =
  818. factory.createArtifactRepository( "source", sourceBase.toURL().toString(), layout, null, null );
  819. }
  820. }