You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LegacyToDefaultConverterTest.java 46KB

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