1   package org.apache.maven.plugins.stage;
2   
3   import org.codehaus.plexus.PlexusTestCase;
4   import org.codehaus.plexus.util.FileUtils;
5   import org.codehaus.plexus.util.IOUtil;
6   import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
7   import org.apache.maven.artifact.repository.metadata.Metadata;
8   import org.apache.maven.wagon.repository.Repository;
9   
10  import java.io.File;
11  import java.io.Reader;
12  import java.io.FileReader;
13  import java.util.List;
14  
15  /** @author Jason van Zyl */
16  public class RepositoryCopierTest
17      extends PlexusTestCase
18  {
19      private String version = "2.0.6";
20  
21      private MetadataXpp3Reader reader = new MetadataXpp3Reader();
22  
23      public void testCopy()
24          throws Exception
25      {
26          RepositoryCopier copier = (RepositoryCopier) lookup( RepositoryCopier.ROLE );
27  
28          File targetRepoSource = new File( getBasedir(), "src/test/target-repository" );
29  
30          File targetRepo = new File( getBasedir(), "target/target-repository" );
31  
32          System.out.println( "Copying target stage for tests ..." );
33  
34          FileUtils.copyDirectoryStructure( targetRepoSource, targetRepo );
35  
36          File stagingRepo = new File( getBasedir(), "src/test/staging-repository" );
37  
38          Repository sourceRepository = new Repository( "source", "file://" + stagingRepo );
39          Repository targetRepository = new Repository( "target", "scp://localhost/" + targetRepo );
40  
41          copier.copy( sourceRepository, targetRepository, version );
42  
43          String s[] = {
44              "maven",
45              "maven-artifact",
46              "maven-artifact-manager",
47              "maven-artifact-test",
48              "maven-core",
49              "maven-error-diagnostics",
50              "maven-model",
51              "maven-monitor",
52              "maven-plugin-api",
53              "maven-plugin-descriptor",
54              "maven-plugin-parameter-documenter",
55              "maven-plugin-registry",
56              "maven-profile",
57              "maven-project",
58              "maven-repository-metadata",
59              "maven-script",
60              "maven-script-ant",
61              "maven-script-beanshell",
62              "maven-settings" };
63  
64          for ( int i = 0; i < s.length; i++ )
65          {
66              testMavenArtifact( targetRepo, s[i] );
67          }
68  
69          // leave something behind to clean it up.
70  
71          // Test merging
72  
73          // Test MD5
74  
75          // Test SHA1
76  
77          // Test new artifacts are present
78      }
79  
80      private void testMavenArtifact( File repo, String artifact )
81          throws Exception
82      {
83          File basedir = new File( repo, "org/apache/maven/" + artifact );
84  
85          File versionDir = new File( basedir, version );
86  
87          assertTrue( versionDir.exists() );
88  
89          Reader r = new FileReader( new File( basedir, RepositoryCopier.MAVEN_METADATA) );
90  
91          Metadata metadata = reader.read( r );
92  
93          // Make sure our new versions has been setup as the release.
94          assertEquals( version, metadata.getVersioning().getRelease() );
95  
96          assertEquals( "20070327020553", metadata.getVersioning().getLastUpdated() );
97  
98          // Make sure we didn't whack old versions.
99          List versions = metadata.getVersioning().getVersions();
100 
101         assertTrue( versions.contains( "2.0.1" ) );
102 
103         assertTrue( versions.contains( "2.0.2" ) );
104 
105         assertTrue( versions.contains( "2.0.3" ) );
106         
107         assertTrue( versions.contains( "2.0.4" ) );
108 
109         assertTrue( versions.contains( "2.0.5" ) );
110 
111         IOUtil.close( r );
112     }
113 }