1 package org.apache.maven.archetype.source;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import java.io.File;
21 import java.io.FileWriter;
22 import java.io.Writer;
23
24 import org.apache.maven.archetype.ArchetypeManager;
25 import org.apache.maven.archetype.catalog.Archetype;
26 import org.apache.maven.archetype.catalog.ArchetypeCatalog;
27 import org.apache.maven.archetype.catalog.io.xpp3.ArchetypeCatalogXpp3Writer;
28 import org.apache.maven.project.DefaultProjectBuildingRequest;
29 import org.apache.maven.project.ProjectBuildingRequest;
30 import org.apache.maven.repository.internal.MavenRepositorySystemSession;
31 import org.codehaus.plexus.PlexusTestCase;
32 import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
33
34 public class LocalCatalogArchetypeDataSourceTest extends PlexusTestCase
35 {
36
37 @Override
38 protected void setUp()
39 throws Exception
40 {
41 super.setUp();
42
43 File catalogDirectory = getTestFile( "target/test-classes/repositories/test-catalog" );
44 catalogDirectory.mkdirs();
45
46 ArchetypeCatalog catalog = new ArchetypeCatalog();
47 Archetype generatedArchetype = new Archetype();
48 generatedArchetype.setGroupId( "groupId" );
49 generatedArchetype.setArtifactId( "artifactId" );
50 generatedArchetype.setVersion( "1" );
51 generatedArchetype.setRepository( "http://localhost:0/repo/" );
52 catalog.addArchetype( generatedArchetype );
53
54 File catalogFile = new File( catalogDirectory, "archetype-catalog.xml" );
55 ArchetypeCatalogXpp3Writer catalogWriter = new ArchetypeCatalogXpp3Writer();
56 try ( Writer writer = new FileWriter( catalogFile ) )
57 {
58 catalogWriter.write( writer, catalog );
59 }
60 }
61
62 public void testLocalCatalog()
63 throws Exception
64 {
65 ArchetypeManager archetype = lookup( ArchetypeManager.class );
66
67 ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
68 MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
69 repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( getTestFile( "target/test-classes/repositories/test-catalog" ) ) );
70 buildingRequest.setRepositorySession( repositorySession );
71
72
73 ArchetypeCatalog result = archetype.getLocalCatalog( buildingRequest );
74
75 assertEquals( 1, result.getArchetypes().size() );
76 assertEquals( "groupId", result.getArchetypes().get( 0 ).getGroupId() );
77 assertEquals( "artifactId", result.getArchetypes().get( 0 ).getArtifactId() );
78 assertEquals( "1", result.getArchetypes().get( 0 ).getVersion() );
79 assertEquals( "http://localhost:0/repo/", result.getArchetypes().get( 0 ).getRepository() );
80 }
81
82 }