You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2009/04/28 01:12:32 UTC

svn commit: r769199 [17/19] - in /maven/mercury/trunk: mercury-ant-tasks/src/main/java/org/apache/maven/mercury/ant/tasks/ mercury-ant-tasks/src/test/java/org/apache/maven/mercury/ant/tasks/ mercury-core/src/main/java/org/apache/maven/mercury/artifact/...

Modified: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java?rev=769199&r1=769198&r2=769199&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java (original)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryReaderM2Test.java Mon Apr 27 23:12:25 2009
@@ -35,494 +35,506 @@
 import org.apache.maven.mercury.crypto.api.StreamVerifierFactory;
 import org.apache.maven.mercury.crypto.pgp.PgpStreamVerifierFactory;
 import org.apache.maven.mercury.crypto.sha.SHA1VerifierFactory;
-import org.apache.maven.mercury.repository.api.MetadataResults;
 import org.apache.maven.mercury.repository.api.ArtifactResults;
+import org.apache.maven.mercury.repository.api.MetadataResults;
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.api.RepositoryReader;
 import org.apache.maven.mercury.transport.api.Server;
 
 /**
- *
- *
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public abstract class AbstractRepositoryReaderM2Test
-extends TestCase
+    extends TestCase
 {
-  Repository repo;
-  DependencyProcessor mdProcessor;
-  RepositoryReader reader;
-  List<ArtifactMetadata> query;
-  
-  ArtifactMetadata bmd;
-  
-  private static final String publicKeyFile = "/pgp/pubring.gpg";
-  private static final String secretKeyFile = "/pgp/secring.gpg";
-  
-  boolean goodOs = false;
-  
-  Server server;
-  HashSet<StreamVerifierFactory> factories;
-  
-  
-  @Override
-  protected void setUp()
-  throws Exception
-  {
-    String os = System.getProperty("os.name");
-    
-    if( "Mac OS X".equals( os ) )
-      goodOs = true;
-    
-    File sn = new File("target/test-classes/repo/a/a/5-SNAPSHOT/a-5-SNAPSHOT.jar");
-    
-    sn.setLastModified( new Date().getTime() + 10000L );
-    
-  }
-  
+    Repository repo;
+
+    DependencyProcessor mdProcessor;
+
+    RepositoryReader reader;
+
+    List<ArtifactMetadata> query;
+
+    ArtifactMetadata bmd;
+
+    private static final String publicKeyFile = "/pgp/pubring.gpg";
+
+    private static final String secretKeyFile = "/pgp/secring.gpg";
+
+    boolean goodOs = false;
+
+    Server server;
+
+    HashSet<StreamVerifierFactory> factories;
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        String os = System.getProperty( "os.name" );
+
+        if ( "Mac OS X".equals( os ) )
+            goodOs = true;
+
+        File sn = new File( "target/test-classes/repo/a/a/5-SNAPSHOT/a-5-SNAPSHOT.jar" );
+
+        sn.setLastModified( new Date().getTime() + 10000L );
+
+    }
+
     @Override
     protected void tearDown()
         throws Exception
     {
-        if( query != null )
+        if ( query != null )
             query.clear();
     }
-  //------------------------------------------------------------------------------
-  public void testReadReleaseVersion()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:[3,3]");
-    query.add( bmd );
-    
-    MetadataResults res = reader.readVersions( query );
-    
-    assertNotNull( res );
-    assertFalse( res.hasExceptions() );
-    assertTrue( res.hasResults() );
-    
-    assertEquals( 1, res.getResults().size() );
-    
-    List<ArtifactMetadata> ror = res.getResult( bmd );
-    
-    assertNotNull( ror );
-    
-    if( res.hasExceptions() )
-      System.out.println( res.getExceptions() );
-
-    assertEquals( 1, ror.size() );
-    
-//    System.out.println(qr);
-  }
-  //------------------------------------------------------------------------------
-  public void testReadReleaseRange()
-  throws IllegalArgumentException, RepositoryException
-  {
-    repo.setRepositoryQualityRange( QualityRange.RELEASES_ONLY );
-  
-    bmd = new ArtifactMetadata("a:a:[3,)");
-    query.add( bmd );
-    
-    MetadataResults res = reader.readVersions( query );
-    
-    assertNotNull( res );
-    
-    if( res.hasExceptions() )
-      System.out.println( res.getExceptions() );
-
-    assertFalse( res.hasExceptions() );
-    assertTrue( res.hasResults() );
-    
-    assertEquals( 1, res.getResults().size() );
-    
-    List<ArtifactMetadata> qr = res.getResult( bmd );
-    
-    assertNotNull( qr );
-    assertTrue( qr.size() > 1 );
-    
-    assertFalse( qr.contains( new ArtifactMetadata("a:a:5-SNAPSHOT") ) );
-    
-    System.out.println("query "+bmd+"->"+qr);
-    
-    MetadataResults depRes = reader.readDependencies( qr );
-    
-    assertNotNull( depRes );
-    assertFalse( depRes.hasExceptions() );
-    assertTrue( depRes.hasResults() );
-    
-    ArtifactMetadata a3 = new ArtifactMetadata("a:a:3");
-    
-    assertTrue( depRes.hasResults( a3 ) );
-    
-    List<ArtifactMetadata> deps = depRes.getResult( a3 );
-    assertNotNull( deps );
-    assertFalse( deps.isEmpty() );
-
-    System.out.println(deps);
-
-    assertTrue( deps.contains( new ArtifactMetadata("b:b:2") ) );
-    assertTrue( deps.contains( new ArtifactMetadata("c:c:(1,)") ) );
-    
-  }
-  //------------------------------------------------------------------------------
-  public void testReadArtifacts()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:3");
-    query.add( bmd );
-
-    ArtifactResults ror = reader.readArtifacts( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<Artifact> res = ror.getResults(bmd);
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
-    
-    Artifact da = res.get( 0 );
-    
-    assertNotNull( da );
-    assertNotNull( da.getFile() );
-    assertTrue( da.getFile().exists() );
-    assertNotNull( da.getPomBlob() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadSnapshot()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:5-SNAPSHOT");
-    query.add( bmd );
-
-    ArtifactResults ror = reader.readArtifacts( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<Artifact> res = ror.getResults(bmd);
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
-    
-    Artifact da = res.get( 0 );
-    
-    assertNotNull( da );
-    assertNotNull( da.getFile() );
-    assertTrue( da.getFile().exists() );
-    assertEquals( 159630, da.getFile().length() );
-    assertNotNull( da.getPomBlob() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadSnapshotTS()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:5-20080807.234713-11");
-    query.add( bmd );
-
-    ArtifactResults ror = reader.readArtifacts( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<Artifact> res = ror.getResults(bmd);
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
-    
-    Artifact da = res.get( 0 );
-    
-    assertNotNull( da );
-    assertNotNull( da.getFile() );
-    assertTrue( da.getFile().exists() );
-    assertEquals( 14800, da.getFile().length() );
-    assertNotNull( da.getPomBlob() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadVersionsLatest()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:LATEST");
-    query.add( bmd );
-
-    MetadataResults ror = reader.readVersions( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-    {
-      Map<ArtifactMetadata, Exception> exs = ror.getExceptions();
-      
-      for( ArtifactMetadata bmd : exs.keySet() )
-      {
-        System.out.println( "\n==========> "+bmd.toString());
-        exs.get( bmd ).printStackTrace();
-      }
-    }
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<ArtifactMetadata> deps = ror.getResult(bmd);
-    
-    assertNotNull( deps );
-    assertEquals( 1, deps.size() );
-    assertTrue( deps.contains( new ArtifactMetadata("a:a:5-SNAPSHOT") ) );
-    
-  }
-  //------------------------------------------------------------------------------
-  public void testReadVersionsRelease()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:RELEASE");
-    query.add( bmd );
-
-    MetadataResults ror = reader.readVersions( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<ArtifactMetadata> deps = ror.getResult(bmd);
-    
-    assertNotNull( deps );
-    assertEquals( 1, deps.size() );
-    assertTrue( deps.contains( new ArtifactMetadata("a:a:4") ) );
-    
-  }
-  //------------------------------------------------------------------------------
-  public void testReadLatest()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:LATEST");
-    query.add( bmd );
-
-    ArtifactResults ror = reader.readArtifacts( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
-  
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<Artifact> res = ror.getResults(bmd);
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
-    
-    Artifact da = res.get( 0 );
-    
-    assertNotNull( da );
-    assertEquals( "5-SNAPSHOT", da.getVersion() );
-    
-    assertNotNull( da.getFile() );
-    assertTrue( da.getFile().exists() );
-    assertEquals( 159630, da.getFile().length() );
-    assertNotNull( da.getPomBlob() );
-    
-  }
-  //------------------------------------------------------------------------------
-  public void testReadRelease()
-  throws IllegalArgumentException, RepositoryException
-  {
-    bmd = new ArtifactMetadata("a:a:RELEASE");
-    query.add( bmd );
-
-    ArtifactResults ror = reader.readArtifacts( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-      System.out.println( ror.getExceptions() );
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<Artifact> res = ror.getResults(bmd);
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
-    
-    Artifact da = res.get( 0 );
-    
-    assertNotNull( da );
-    assertEquals( "4", da.getVersion() );
-    
-    assertNotNull( da.getFile() );
-    assertTrue( da.getFile().exists() );
-    assertEquals( 14800, da.getFile().length() );
-    assertNotNull( da.getPomBlob() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadAndVerifyGoodArtifact()
-  throws IllegalArgumentException, RepositoryException, StreamVerifierException
-  {
-    // verifiers
-    factories = new HashSet<StreamVerifierFactory>();       
-    factories.add( 
-        new PgpStreamVerifierFactory(
-                new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, false, true )
-                , getClass().getResourceAsStream( publicKeyFile )
-                                    )
-                  );
-    factories.add( new SHA1VerifierFactory( true, false ) );
-    
-    if( goodOs )
-      server.setReaderStreamVerifierFactories(factories);
-
-    bmd = new ArtifactMetadata("a:a:4");
-    query.add( bmd );
-
-    ArtifactResults ror = reader.readArtifacts( query );
-    
-    assertNotNull( ror );
-    
-    if( ror.hasExceptions() )
-    {
-      System.out.println("===> unexpected Exceptions");
-      for( Exception e : ror.getExceptions().values() )
-        System.out.println( e.getClass().getName()+": "+e.getMessage() );
-      System.out.println("<=== unexpected Exceptions");
-    }
-    
-    assertFalse( ror.hasExceptions() );
-    assertTrue( ror.hasResults() );
-    
-    List<Artifact> res = ror.getResults(bmd);
-    
-    assertNotNull( res );
-    assertEquals( 1, res.size() );
-    
-    Artifact da = res.get( 0 );
-    
-    assertNotNull( da );
-    assertNotNull( da.getFile() );
-    assertTrue( da.getFile().exists() );
-    assertNotNull( da.getPomBlob() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadAndVerifyArtifactNoSig()
-  throws IllegalArgumentException, StreamVerifierException
-  {
-    // verifiers
-    factories = new HashSet<StreamVerifierFactory>();       
-    factories.add( 
-        new PgpStreamVerifierFactory(
-                new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, false, true )
-                , getClass().getResourceAsStream( publicKeyFile )
-                                    )
-                  );
-    
-    server.setReaderStreamVerifierFactories(factories);
-
-    bmd = new ArtifactMetadata("a:a:3");
-    query.add( bmd );
-
-    ArtifactResults ror = null;
-    try
-    {
-      ror = reader.readArtifacts( query );
-    }
-    catch( RepositoryException e )
-    {
-      System.out.println( "Expected exception: "+e.getMessage() );
-      return;
-    }
-    assertNotNull( ror );
-    if( !ror.hasExceptions() )
-      fail( "Artifact a:a:3 does not have .asc signature, PGP verifier is not lenient, but this did not cause a RepositoryException" );
-
-    System.out.println("Expected Exceptions: "+ror.getExceptions() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadAndVerifyArtifactBadSig()
-  throws IllegalArgumentException, StreamVerifierException
-  {
-    // verifiers
-    factories = new HashSet<StreamVerifierFactory>();       
-    factories.add( 
-        new PgpStreamVerifierFactory(
-                new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, false, true )
-                , getClass().getResourceAsStream( publicKeyFile )
-                                    )
-                  );
-    server.setReaderStreamVerifierFactories(factories);
-
-    bmd = new ArtifactMetadata("a:a:2");
-    query.add( bmd );
-
-    ArtifactResults ror = null;
-    try
-    {
-      ror = reader.readArtifacts( query );
-    }
-    catch( RepositoryException e )
-    {
-      System.out.println( "Expected exception: "+e.getMessage() );
-      return;
-    }
-    assertNotNull( ror );
-    if( !ror.hasExceptions() )
-      fail( "Artifact a:a:2 does have a bad .asc (PGP) signature, PGP verifier is not lenient, but this did not cause a RepositoryException" );
-
-    System.out.println("Expected Exceptions: "+ror.getExceptions() );
-  }
-  //------------------------------------------------------------------------------
-  public void testReadAndVerifyArtifactNoSigLenientVerifier()
-  throws IllegalArgumentException, StreamVerifierException
-  {
-    // verifiers
-    factories = new HashSet<StreamVerifierFactory>();       
-    factories.add( 
-        new PgpStreamVerifierFactory(
-                new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, true, true )
-                , getClass().getResourceAsStream( publicKeyFile )
-                                    )
-                  );
-    if( goodOs )
-    {
-      factories.add( new SHA1VerifierFactory(true,false) );
-      server.setReaderStreamVerifierFactories(factories);
-    }
-
-    bmd = new ArtifactMetadata("a:a:3");
-    query.add( bmd );
-
-    ArtifactResults ror = null;
-    try
-    {
-      ror = reader.readArtifacts( query );
-    }
-    catch( RepositoryException e )
-    {
-      fail( "Artifact a:a:3 does not have .asc signature, PGP verifier is lenient, but still caused a RepositoryException: "+e.getMessage() );
-    }
-    if( ror.hasExceptions() )
-      fail( "Artifact a:a:3 does not have .asc signature, PGP verifier is lenient, but still caused exceptions: "+ror.getExceptions() );
-  }
-  //------------------------------------------------------------------------------
-  //------------------------------------------------------------------------------
+
+    // ------------------------------------------------------------------------------
+    public void testReadReleaseVersion()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:[3,3]" );
+        query.add( bmd );
+
+        MetadataResults res = reader.readVersions( query );
+
+        assertNotNull( res );
+        assertFalse( res.hasExceptions() );
+        assertTrue( res.hasResults() );
+
+        assertEquals( 1, res.getResults().size() );
+
+        List<ArtifactMetadata> ror = res.getResult( bmd );
+
+        assertNotNull( ror );
+
+        if ( res.hasExceptions() )
+            System.out.println( res.getExceptions() );
+
+        assertEquals( 1, ror.size() );
+
+        // System.out.println(qr);
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadReleaseRange()
+        throws IllegalArgumentException, RepositoryException
+    {
+        repo.setRepositoryQualityRange( QualityRange.RELEASES_ONLY );
+
+        bmd = new ArtifactMetadata( "a:a:[3,)" );
+        query.add( bmd );
+
+        MetadataResults res = reader.readVersions( query );
+
+        assertNotNull( res );
+
+        if ( res.hasExceptions() )
+            System.out.println( res.getExceptions() );
+
+        assertFalse( res.hasExceptions() );
+        assertTrue( res.hasResults() );
+
+        assertEquals( 1, res.getResults().size() );
+
+        List<ArtifactMetadata> qr = res.getResult( bmd );
+
+        assertNotNull( qr );
+        assertTrue( qr.size() > 1 );
+
+        assertFalse( qr.contains( new ArtifactMetadata( "a:a:5-SNAPSHOT" ) ) );
+
+        System.out.println( "query " + bmd + "->" + qr );
+
+        MetadataResults depRes = reader.readDependencies( qr );
+
+        assertNotNull( depRes );
+        assertFalse( depRes.hasExceptions() );
+        assertTrue( depRes.hasResults() );
+
+        ArtifactMetadata a3 = new ArtifactMetadata( "a:a:3" );
+
+        assertTrue( depRes.hasResults( a3 ) );
+
+        List<ArtifactMetadata> deps = depRes.getResult( a3 );
+        assertNotNull( deps );
+        assertFalse( deps.isEmpty() );
+
+        System.out.println( deps );
+
+        assertTrue( deps.contains( new ArtifactMetadata( "b:b:2" ) ) );
+        assertTrue( deps.contains( new ArtifactMetadata( "c:c:(1,)" ) ) );
+
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadArtifacts()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:3" );
+        query.add( bmd );
+
+        ArtifactResults ror = reader.readArtifacts( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+            System.out.println( ror.getExceptions() );
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<Artifact> res = ror.getResults( bmd );
+
+        assertNotNull( res );
+        assertEquals( 1, res.size() );
+
+        Artifact da = res.get( 0 );
+
+        assertNotNull( da );
+        assertNotNull( da.getFile() );
+        assertTrue( da.getFile().exists() );
+        assertNotNull( da.getPomBlob() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadSnapshot()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:5-SNAPSHOT" );
+        query.add( bmd );
+
+        ArtifactResults ror = reader.readArtifacts( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+            System.out.println( ror.getExceptions() );
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<Artifact> res = ror.getResults( bmd );
+
+        assertNotNull( res );
+        assertEquals( 1, res.size() );
+
+        Artifact da = res.get( 0 );
+
+        assertNotNull( da );
+        assertNotNull( da.getFile() );
+        assertTrue( da.getFile().exists() );
+        assertEquals( 159630, da.getFile().length() );
+        assertNotNull( da.getPomBlob() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadSnapshotTS()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:5-20080807.234713-11" );
+        query.add( bmd );
+
+        ArtifactResults ror = reader.readArtifacts( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+            System.out.println( ror.getExceptions() );
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<Artifact> res = ror.getResults( bmd );
+
+        assertNotNull( res );
+        assertEquals( 1, res.size() );
+
+        Artifact da = res.get( 0 );
+
+        assertNotNull( da );
+        assertNotNull( da.getFile() );
+        assertTrue( da.getFile().exists() );
+        assertEquals( 14800, da.getFile().length() );
+        assertNotNull( da.getPomBlob() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadVersionsLatest()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:LATEST" );
+        query.add( bmd );
+
+        MetadataResults ror = reader.readVersions( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+        {
+            Map<ArtifactMetadata, Exception> exs = ror.getExceptions();
+
+            for ( ArtifactMetadata bmd : exs.keySet() )
+            {
+                System.out.println( "\n==========> " + bmd.toString() );
+                exs.get( bmd ).printStackTrace();
+            }
+        }
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<ArtifactMetadata> deps = ror.getResult( bmd );
+
+        assertNotNull( deps );
+        assertEquals( 1, deps.size() );
+        assertTrue( deps.contains( new ArtifactMetadata( "a:a:5-SNAPSHOT" ) ) );
+
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadVersionsRelease()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:RELEASE" );
+        query.add( bmd );
+
+        MetadataResults ror = reader.readVersions( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+            System.out.println( ror.getExceptions() );
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<ArtifactMetadata> deps = ror.getResult( bmd );
+
+        assertNotNull( deps );
+        assertEquals( 1, deps.size() );
+        assertTrue( deps.contains( new ArtifactMetadata( "a:a:4" ) ) );
+
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadLatest()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:LATEST" );
+        query.add( bmd );
+
+        ArtifactResults ror = reader.readArtifacts( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+            System.out.println( ror.getExceptions() );
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<Artifact> res = ror.getResults( bmd );
+
+        assertNotNull( res );
+        assertEquals( 1, res.size() );
+
+        Artifact da = res.get( 0 );
+
+        assertNotNull( da );
+        assertEquals( "5-SNAPSHOT", da.getVersion() );
+
+        assertNotNull( da.getFile() );
+        assertTrue( da.getFile().exists() );
+        assertEquals( 159630, da.getFile().length() );
+        assertNotNull( da.getPomBlob() );
+
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadRelease()
+        throws IllegalArgumentException, RepositoryException
+    {
+        bmd = new ArtifactMetadata( "a:a:RELEASE" );
+        query.add( bmd );
+
+        ArtifactResults ror = reader.readArtifacts( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+            System.out.println( ror.getExceptions() );
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<Artifact> res = ror.getResults( bmd );
+
+        assertNotNull( res );
+        assertEquals( 1, res.size() );
+
+        Artifact da = res.get( 0 );
+
+        assertNotNull( da );
+        assertEquals( "4", da.getVersion() );
+
+        assertNotNull( da.getFile() );
+        assertTrue( da.getFile().exists() );
+        assertEquals( 14800, da.getFile().length() );
+        assertNotNull( da.getPomBlob() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadAndVerifyGoodArtifact()
+        throws IllegalArgumentException, RepositoryException, StreamVerifierException
+    {
+        // verifiers
+        factories = new HashSet<StreamVerifierFactory>();
+        factories.add( new PgpStreamVerifierFactory(
+                                                     new StreamVerifierAttributes(
+                                                                                   PgpStreamVerifierFactory.DEFAULT_EXTENSION,
+                                                                                   false, true ),
+                                                     getClass().getResourceAsStream( publicKeyFile ) ) );
+        factories.add( new SHA1VerifierFactory( true, false ) );
+
+        if ( goodOs )
+            server.setReaderStreamVerifierFactories( factories );
+
+        bmd = new ArtifactMetadata( "a:a:4" );
+        query.add( bmd );
+
+        ArtifactResults ror = reader.readArtifacts( query );
+
+        assertNotNull( ror );
+
+        if ( ror.hasExceptions() )
+        {
+            System.out.println( "===> unexpected Exceptions" );
+            for ( Exception e : ror.getExceptions().values() )
+                System.out.println( e.getClass().getName() + ": " + e.getMessage() );
+            System.out.println( "<=== unexpected Exceptions" );
+        }
+
+        assertFalse( ror.hasExceptions() );
+        assertTrue( ror.hasResults() );
+
+        List<Artifact> res = ror.getResults( bmd );
+
+        assertNotNull( res );
+        assertEquals( 1, res.size() );
+
+        Artifact da = res.get( 0 );
+
+        assertNotNull( da );
+        assertNotNull( da.getFile() );
+        assertTrue( da.getFile().exists() );
+        assertNotNull( da.getPomBlob() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadAndVerifyArtifactNoSig()
+        throws IllegalArgumentException, StreamVerifierException
+    {
+        // verifiers
+        factories = new HashSet<StreamVerifierFactory>();
+        factories.add( new PgpStreamVerifierFactory(
+                                                     new StreamVerifierAttributes(
+                                                                                   PgpStreamVerifierFactory.DEFAULT_EXTENSION,
+                                                                                   false, true ),
+                                                     getClass().getResourceAsStream( publicKeyFile ) ) );
+
+        server.setReaderStreamVerifierFactories( factories );
+
+        bmd = new ArtifactMetadata( "a:a:3" );
+        query.add( bmd );
+
+        ArtifactResults ror = null;
+        try
+        {
+            ror = reader.readArtifacts( query );
+        }
+        catch ( RepositoryException e )
+        {
+            System.out.println( "Expected exception: " + e.getMessage() );
+            return;
+        }
+        assertNotNull( ror );
+        if ( !ror.hasExceptions() )
+            fail( "Artifact a:a:3 does not have .asc signature, PGP verifier is not lenient, but this did not cause a RepositoryException" );
+
+        System.out.println( "Expected Exceptions: " + ror.getExceptions() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadAndVerifyArtifactBadSig()
+        throws IllegalArgumentException, StreamVerifierException
+    {
+        // verifiers
+        factories = new HashSet<StreamVerifierFactory>();
+        factories.add( new PgpStreamVerifierFactory(
+                                                     new StreamVerifierAttributes(
+                                                                                   PgpStreamVerifierFactory.DEFAULT_EXTENSION,
+                                                                                   false, true ),
+                                                     getClass().getResourceAsStream( publicKeyFile ) ) );
+        server.setReaderStreamVerifierFactories( factories );
+
+        bmd = new ArtifactMetadata( "a:a:2" );
+        query.add( bmd );
+
+        ArtifactResults ror = null;
+        try
+        {
+            ror = reader.readArtifacts( query );
+        }
+        catch ( RepositoryException e )
+        {
+            System.out.println( "Expected exception: " + e.getMessage() );
+            return;
+        }
+        assertNotNull( ror );
+        if ( !ror.hasExceptions() )
+            fail( "Artifact a:a:2 does have a bad .asc (PGP) signature, PGP verifier is not lenient, but this did not cause a RepositoryException" );
+
+        System.out.println( "Expected Exceptions: " + ror.getExceptions() );
+    }
+
+    // ------------------------------------------------------------------------------
+    public void testReadAndVerifyArtifactNoSigLenientVerifier()
+        throws IllegalArgumentException, StreamVerifierException
+    {
+        // verifiers
+        factories = new HashSet<StreamVerifierFactory>();
+        factories.add( new PgpStreamVerifierFactory(
+                                                     new StreamVerifierAttributes(
+                                                                                   PgpStreamVerifierFactory.DEFAULT_EXTENSION,
+                                                                                   true, true ),
+                                                     getClass().getResourceAsStream( publicKeyFile ) ) );
+        if ( goodOs )
+        {
+            factories.add( new SHA1VerifierFactory( true, false ) );
+            server.setReaderStreamVerifierFactories( factories );
+        }
+
+        bmd = new ArtifactMetadata( "a:a:3" );
+        query.add( bmd );
+
+        ArtifactResults ror = null;
+        try
+        {
+            ror = reader.readArtifacts( query );
+        }
+        catch ( RepositoryException e )
+        {
+            fail( "Artifact a:a:3 does not have .asc signature, PGP verifier is lenient, but still caused a RepositoryException: "
+                + e.getMessage() );
+        }
+        if ( ror.hasExceptions() )
+            fail( "Artifact a:a:3 does not have .asc signature, PGP verifier is lenient, but still caused exceptions: "
+                + ror.getExceptions() );
+    }
+    // ------------------------------------------------------------------------------
+    // ------------------------------------------------------------------------------
 }

Modified: maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java
URL: http://svn.apache.org/viewvc/maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java?rev=769199&r1=769198&r2=769199&view=diff
==============================================================================
--- maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java (original)
+++ maven/mercury/trunk/mercury-it/src/test/java/org/apache/maven/mercury/repository/tests/AbstractRepositoryWriterM2Test.java Mon Apr 27 23:12:25 2009
@@ -43,405 +43,456 @@
 import org.codehaus.plexus.PlexusTestCase;
 
 /**
- *
- *
  * @author Oleg Gusakov
  * @version $Id$
- *
  */
 public abstract class AbstractRepositoryWriterM2Test
-extends PlexusTestCase
+    extends PlexusTestCase
 {
-  Repository repo;
-  
-  File targetDirectory; 
-  
-  DependencyProcessor mdProcessor;
-  
-  RepositoryReader reader;
-  RepositoryWriter writer;
-
-  List<ArtifactMetadata> query;
-  
-  ArtifactMetadata bmd;
-  
-  String pomBlob;
-  
-  protected static final String keyId   = "0EDB5D91141BC4F2";
-
-  protected static final String secretKeyFile = "/pgp/secring.gpg";
-  protected static final String publicKeyFile = "/pgp/pubring.gpg";
-  protected static final String secretKeyPass = "testKey82";
-  
-  PgpStreamVerifierFactory pgpF;
-  SHA1VerifierFactory      sha1F;
-  HashSet<StreamVerifierFactory> vFacPgp;
-  HashSet<StreamVerifierFactory> vFacSha1;
-  
-  Server server;
-  HashSet<StreamVerifierFactory> factories;
-  
-  File f;
-  
-  File artifactBinary;
-  long binarySize = -1L;
-
-  File artifactPom;
-  long pomSize = -1L;
-  byte [] pomBytes;
-
-  static PlexusContainer plexus;
-  
-  /** current test works with snapshots 
-   * @throws Exception */
-  abstract void setReleases() throws Exception;
-  /** current test works with releases */
-  abstract void setSnapshots() throws Exception;
-  
-  static final boolean differentEOL = File.pathSeparatorChar == ';';
-  
-  
-  @Override
-  protected void setUp()
-  throws Exception
-  {
-    super.setUp();
-
-    if( plexus == null )
-      plexus = getContainer();
-
-    pgpF = new PgpStreamVerifierFactory(
-        new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION, false, true )
-        , getClass().getResourceAsStream( publicKeyFile )
-                            );
-    sha1F = new SHA1VerifierFactory( false, false );
+    Repository repo;
 
-    vFacPgp  = new HashSet<StreamVerifierFactory>(1);
-    vFacSha1 = new HashSet<StreamVerifierFactory>(1);
+    File targetDirectory;
 
-//    if( ! differentEOL )
-//    {
+    DependencyProcessor mdProcessor;
+
+    RepositoryReader reader;
+
+    RepositoryWriter writer;
+
+    List<ArtifactMetadata> query;
+
+    ArtifactMetadata bmd;
+
+    String pomBlob;
+
+    protected static final String keyId = "0EDB5D91141BC4F2";
+
+    protected static final String secretKeyFile = "/pgp/secring.gpg";
+
+    protected static final String publicKeyFile = "/pgp/pubring.gpg";
+
+    protected static final String secretKeyPass = "testKey82";
+
+    PgpStreamVerifierFactory pgpF;
+
+    SHA1VerifierFactory sha1F;
+
+    HashSet<StreamVerifierFactory> vFacPgp;
+
+    HashSet<StreamVerifierFactory> vFacSha1;
+
+    Server server;
+
+    HashSet<StreamVerifierFactory> factories;
+
+    File f;
+
+    File artifactBinary;
+
+    long binarySize = -1L;
+
+    File artifactPom;
+
+    long pomSize = -1L;
+
+    byte[] pomBytes;
+
+    static PlexusContainer plexus;
+
+    /**
+     * current test works with snapshots
+     * 
+     * @throws Exception
+     */
+    abstract void setReleases()
+        throws Exception;
+
+    /** current test works with releases */
+    abstract void setSnapshots()
+        throws Exception;
+
+    static final boolean differentEOL = File.pathSeparatorChar == ';';
+
+    @Override
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+
+        if ( plexus == null )
+            plexus = getContainer();
+
+        pgpF =
+            new PgpStreamVerifierFactory( new StreamVerifierAttributes( PgpStreamVerifierFactory.DEFAULT_EXTENSION,
+                                                                        false, true ),
+                                          getClass().getResourceAsStream( publicKeyFile ) );
+        sha1F = new SHA1VerifierFactory( false, false );
+
+        vFacPgp = new HashSet<StreamVerifierFactory>( 1 );
+        vFacSha1 = new HashSet<StreamVerifierFactory>( 1 );
+
+        // if( ! differentEOL )
+        // {
         vFacPgp.add( pgpF );
         vFacSha1.add( sha1F );
-//    }
+        // }
 
-    artifactBinary = File.createTempFile( "test-repo-writer", "bin" );
-    artifactBinary.deleteOnExit();
-    FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), artifactBinary );
-    binarySize = artifactBinary.length();
-
-    System.out.println( "Binary size is "+binarySize+" bytes" );
-
-    artifactPom = File.createTempFile( "test-repo-writer", "pom" );
-    artifactPom.deleteOnExit();
-    FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.pom" ), artifactPom );
-    pomSize = artifactPom.length();
-    pomBytes = FileUtil.readRawData( artifactPom );
-  }
-  
-  @Override
-  protected void tearDown()
-  throws Exception
-  {
-    super.tearDown();
-  }
-
-  public void testWriteArtifact()
-  throws Exception
-  {
-    setReleases();
-    
-    File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar");
-
-    assertFalse( af.exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.asc").exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1").exists() );
-    
-    File ap = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom");
-    assertFalse( ap.exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.asc").exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1").exists() );
-    
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/"+repo.getMetadataName()).exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/"+repo.getMetadataName()+".asc").exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/"+repo.getMetadataName()+".sha1").exists() );
-
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()).exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()+".asc").exists() );
-    assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()+".sha1").exists() );
-
-    Set<Artifact> artifacts = new HashSet<Artifact>(3);
-    DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-core:2.0.9") );
-    
-    da.setPomBlob( pomBytes );
-    da.setFile( artifactBinary );
-    artifacts.add( da );
-    
-    writer.writeArtifacts( artifacts );
-    Thread.sleep( 2000L );
-    
-    f = new File( targetDirectory, "/org/apache/maven/maven-core/"+repo.getMetadataName());
-    assertTrue( f.exists() );
-    
-//  [MERCURY-83] - should not verify repo metadata, it's repository's business    
-//    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/"+repo.getMetadataName()+".asc").exists() );
-//    FileUtil.verify( f, vFacPgp, false, true );
-//    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/"+repo.getMetadataName()+".sha1").exists() );
-//    FileUtil.verify( f, vFacSha1, false, true );
-
-    f = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName());
-    assertTrue( f.exists() );
-//    [MERCURY-83] - should not verify repo metadata, it's repository's business    
-//    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()+".asc").exists() );
-//    FileUtil.verify( f, vFacPgp, false, true );
-//    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()+".sha1").exists() );
-//    FileUtil.verify( f, vFacSha1, false, true );
-    
-    assertTrue( af.exists() );
-    assertEquals( binarySize, af.length() );
-    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.asc").exists() );
-    FileUtil.verify( af, vFacPgp, false, true );
-    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1").exists() );
-    FileUtil.verify( af, vFacSha1, false, true );
-    
-    assertTrue( ap.exists() );
-    assertEquals( pomSize, ap.length() );  
-    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.asc").exists() );
-    FileUtil.verify( ap, vFacPgp, false, true );
-    assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1").exists() );
-    FileUtil.verify( ap, vFacSha1, false, true );
-  }
-  
-  public void testWriteSnapshotAsTS()
-  throws Exception
-  {
-    setSnapshots();
-    
-    Set<Artifact> artifacts = new HashSet<Artifact>(3);
-    DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-core:2.0.9-20080805.215925-8") );
-    da.setPomBlob( pomBytes );
-    da.setFile( artifactBinary );
-    artifacts.add( da );
-    
-    writer.writeArtifacts( artifacts );
-    
-    File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-8.jar");
-    assertTrue( af.exists() );
-    assertEquals( binarySize, af.length() );
-    
-    File ap = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-8.pom");
-    assertTrue( ap.exists() );
-    assertEquals( pomSize, ap.length() );  
-  }
-  
-  public void testWriteSnapshot()
-  throws Exception
-  {
-    setSnapshots();
-    
-    Set<Artifact> set = new HashSet<Artifact>(3);
-    DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-core:2.0.9-SNAPSHOT") );
-    da.setPomBlob( pomBytes );
-    da.setFile( artifactBinary );
-    set.add( da );
-    
-    writer.writeArtifacts( set );
-    
-    File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-SNAPSHOT.jar");
-    assertTrue( af.exists() );
-    assertEquals( binarySize, af.length() );
-    
-    File ap = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-SNAPSHOT.pom");
-    assertTrue( ap.exists() );
-    assertEquals( pomSize, ap.length() );  
-  }
-  
-  public void testWriteClassifier()
-  throws Exception
-  {
-    setSnapshots();
-    
-    Set<Artifact> set = new HashSet<Artifact>(3);
-    DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-core:2.0.9:all") );
-    da.setFile( artifactBinary );
-    set.add( da );
-    
-    writer.writeArtifacts( set );
-    
-    File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9-all.jar");
-    assertTrue( af.exists() );
-    assertEquals( binarySize, af.length() );
-  }
-  
-  public void testWriteContentionSingleArtifact()
-  throws Exception
-  {
-    setSnapshots();
-    
-    Set<Artifact> set = new HashSet<Artifact>(40);
+        artifactBinary = File.createTempFile( "test-repo-writer", "bin" );
+        artifactBinary.deleteOnExit();
+        FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), artifactBinary );
+        binarySize = artifactBinary.length();
+
+        System.out.println( "Binary size is " + binarySize + " bytes" );
+
+        artifactPom = File.createTempFile( "test-repo-writer", "pom" );
+        artifactPom.deleteOnExit();
+        FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.pom" ), artifactPom );
+        pomSize = artifactPom.length();
+        pomBytes = FileUtil.readRawData( artifactPom );
+    }
 
-    // prep. artifacts
-    for( int i=0; i<20; i++ )
+    @Override
+    protected void tearDown()
+        throws Exception
     {
-      String si = ""+i;
-      
-      DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-core:2.0.9-20080805.215925-"+si) );
-      da.setPomBlob( pomBytes );
-      File ab = File.createTempFile( "test-core-", "-bin" );
-      FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), ab );
-      da.setFile( ab );
-      set.add( da );
+        super.tearDown();
     }
-    
-    assertEquals( 20, set.size() );
-    
-    long start = System.currentTimeMillis();
-    // write 'em
-    writer.writeArtifacts( set );
-    
-    System.out.println("Took "+(System.currentTimeMillis()-start)+" millis to write "+set.size()+" artifacts");
-    System.out.flush();
-    
-    // check if the showed up in the repo
-    for( int i=0; i<20; i++ )
+
+    public void testWriteArtifact()
+        throws Exception
     {
-      String si = ""+i;
+        setReleases();
 
-      String fn = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-"+si+".jar";
-      File af = new File( fn );
-      assertTrue( fn+" does not exist", af.exists() );
-      assertEquals( binarySize, af.length() );
-      
-      // is pom there also?
-      fn = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-"+si+".pom";
-      File ap = new File( fn );
-      assertTrue( fn+" does not exist", ap.exists() );
-      assertEquals( pomSize, ap.length() );
+        File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar" );
+
+        assertFalse( af.exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.asc" ).exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1" ).exists() );
+
+        File ap = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom" );
+        assertFalse( ap.exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.asc" ).exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1" ).exists() );
+
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/" + repo.getMetadataName() ).exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/" + repo.getMetadataName() + ".asc" ).exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/" + repo.getMetadataName() + ".sha1" ).exists() );
+
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/" + repo.getMetadataName() ).exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/" + repo.getMetadataName() + ".asc" ).exists() );
+        assertFalse( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/" + repo.getMetadataName()
+            + ".sha1" ).exists() );
+
+        Set<Artifact> artifacts = new HashSet<Artifact>( 3 );
+        DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-core:2.0.9" ) );
+
+        da.setPomBlob( pomBytes );
+        da.setFile( artifactBinary );
+        artifacts.add( da );
+
+        writer.writeArtifacts( artifacts );
+        Thread.sleep( 2000L );
+
+        f = new File( targetDirectory, "/org/apache/maven/maven-core/" + repo.getMetadataName() );
+        assertTrue( f.exists() );
+
+        // [MERCURY-83] - should not verify repo metadata, it's repository's business
+        // assertTrue( new File( targetDirectory,
+        // "/org/apache/maven/maven-core/"+repo.getMetadataName()+".asc").exists() );
+        // FileUtil.verify( f, vFacPgp, false, true );
+        // assertTrue( new File( targetDirectory,
+        // "/org/apache/maven/maven-core/"+repo.getMetadataName()+".sha1").exists() );
+        // FileUtil.verify( f, vFacSha1, false, true );
+
+        f = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/" + repo.getMetadataName() );
+        assertTrue( f.exists() );
+        // [MERCURY-83] - should not verify repo metadata, it's repository's business
+        // assertTrue( new File( targetDirectory,
+        // "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()+".asc").exists() );
+        // FileUtil.verify( f, vFacPgp, false, true );
+        // assertTrue( new File( targetDirectory,
+        // "/org/apache/maven/maven-core/2.0.9/"+repo.getMetadataName()+".sha1").exists() );
+        // FileUtil.verify( f, vFacSha1, false, true );
+
+        assertTrue( af.exists() );
+        assertEquals( binarySize, af.length() );
+        assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.asc" ).exists() );
+        FileUtil.verify( af, vFacPgp, false, true );
+        assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1" ).exists() );
+        FileUtil.verify( af, vFacSha1, false, true );
+
+        assertTrue( ap.exists() );
+        assertEquals( pomSize, ap.length() );
+        assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.asc" ).exists() );
+        FileUtil.verify( ap, vFacPgp, false, true );
+        assertTrue( new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1" ).exists() );
+        FileUtil.verify( ap, vFacSha1, false, true );
     }
-    
-    // check GAV metadata has all versions
-    String mdFile = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-core/2.0.9-SNAPSHOT/"+repo.getMetadataName();
-    byte [] mdBytes = FileUtil.readRawData( new File(mdFile) );
-    Metadata md = MetadataBuilder.read( new ByteArrayInputStream(mdBytes) );
-    
-    assertNotNull( md );
-    assertNotNull( md.getVersioning() );
-    assertNotNull( md.getVersioning().getVersions() );
-    assertFalse( md.getVersioning().getVersions().isEmpty() );
-    
-    List<String> versions = md.getVersioning().getVersions();
-    System.out.println( versions.size()+" versions: " + versions );
-
-    assertEquals( 20, versions.size() );
-    
-    for( int i=0; i<20;i++ )
+
+    public void testWriteSnapshotAsTS()
+        throws Exception
     {
-      String v = "2.0.9-20080805.215925-"+i;
-      assertTrue( "Did not find "+v+" in GAV metadata "+mdFile+"\n"+new String(mdBytes), versions.contains( v ) );
+        setSnapshots();
+
+        Set<Artifact> artifacts = new HashSet<Artifact>( 3 );
+        DefaultArtifact da =
+            new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-core:2.0.9-20080805.215925-8" ) );
+        da.setPomBlob( pomBytes );
+        da.setFile( artifactBinary );
+        artifacts.add( da );
+
+        writer.writeArtifacts( artifacts );
+
+        File af =
+            new File( targetDirectory,
+                      "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-8.jar" );
+        assertTrue( af.exists() );
+        assertEquals( binarySize, af.length() );
+
+        File ap =
+            new File( targetDirectory,
+                      "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-8.pom" );
+        assertTrue( ap.exists() );
+        assertEquals( pomSize, ap.length() );
     }
-  }
-  
-  
-  public void testWriteContentionMultipleArtifacts()
-  throws Exception
-  {
-    setSnapshots();
-    
-    Set<Artifact> set = new HashSet<Artifact>(40);
 
-    // prep. artifacts
-    for( int i=0; i<20; i++ )
+    public void testWriteSnapshot()
+        throws Exception
     {
-      String si = ""+i;
-      
-      DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-core:2.0."+si+"-SNAPSHOT") );
-      da.setPomBlob( pomBytes );
-      File ab = File.createTempFile( "test-core-", "-bin" );
-      FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), ab );
-      da.setFile( ab );
-      set.add( da );
-
-      da = new DefaultArtifact( new ArtifactMetadata("org.apache.maven:maven-mercury:2.0."+si+"-SNAPSHOT") );
-      da.setPomBlob( pomBytes );
-      ab = File.createTempFile( "test-mercury-", "-bin" );
-      FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), ab );
-      da.setFile( ab );
-      set.add( da );
+        setSnapshots();
+
+        Set<Artifact> set = new HashSet<Artifact>( 3 );
+        DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-core:2.0.9-SNAPSHOT" ) );
+        da.setPomBlob( pomBytes );
+        da.setFile( artifactBinary );
+        set.add( da );
+
+        writer.writeArtifacts( set );
+
+        File af =
+            new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-SNAPSHOT.jar" );
+        assertTrue( af.exists() );
+        assertEquals( binarySize, af.length() );
+
+        File ap =
+            new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-SNAPSHOT.pom" );
+        assertTrue( ap.exists() );
+        assertEquals( pomSize, ap.length() );
     }
-    
-    assertEquals( 40, set.size() );
-    
-    long start = System.currentTimeMillis();
-    // write 'em
-    writer.writeArtifacts( set );
-    
-    System.out.println("Took "+(System.currentTimeMillis()-start)+" millis to write "+set.size()+" artifacts");
-    System.out.flush();
-    
-    // check if the showed up in the repo
-    for( int i=0; i<20; i++ )
+
+    public void testWriteClassifier()
+        throws Exception
     {
-      String si = ""+i;
+        setSnapshots();
 
-      String fn = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-core/2.0."+si+"-SNAPSHOT/maven-core-2.0."+si+"-SNAPSHOT.jar";
-      File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0."+si+"-SNAPSHOT/maven-core-2.0."+si+"-SNAPSHOT.jar" );
-      assertTrue( fn+" does not exist", af.exists() );
-      assertEquals( binarySize, af.length() );
-      
-      fn = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-core/2.0."+si+"-SNAPSHOT/maven-core-2.0."+si+"-SNAPSHOT.pom";
-      File ap = new File( targetDirectory, "/org/apache/maven/maven-core/2.0."+si+"-SNAPSHOT/maven-core-2.0."+si+"-SNAPSHOT.pom");
-      assertTrue( fn+" does not exist", ap.exists() );
-      assertEquals( pomSize, ap.length() );
-
-      fn = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-mercury/2.0."+si+"-SNAPSHOT/maven-mercury-2.0."+i+"-SNAPSHOT.jar";
-      af = new File( targetDirectory, "/org/apache/maven/maven-mercury/2.0."+si+"-SNAPSHOT/maven-mercury-2.0."+i+"-SNAPSHOT.jar");
-      assertTrue( fn+" does not xist", af.exists() );
-      assertEquals( binarySize, af.length() );
-      
-      fn = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-mercury/2.0."+si+"-SNAPSHOT/maven-mercury-2.0."+i+"-SNAPSHOT.pom";
-      ap = new File( targetDirectory, "/org/apache/maven/maven-mercury/2.0."+si+"-SNAPSHOT/maven-mercury-2.0."+i+"-SNAPSHOT.pom");
-      assertTrue( ap.exists() );
-      assertEquals( pomSize, ap.length() );
+        Set<Artifact> set = new HashSet<Artifact>( 3 );
+        DefaultArtifact da = new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-core:2.0.9:all" ) );
+        da.setFile( artifactBinary );
+        set.add( da );
+
+        writer.writeArtifacts( set );
+
+        File af = new File( targetDirectory, "/org/apache/maven/maven-core/2.0.9/maven-core-2.0.9-all.jar" );
+        assertTrue( af.exists() );
+        assertEquals( binarySize, af.length() );
     }
-    
-    // check GA metadata has all versions
-    String mdFile = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-mercury/"+repo.getMetadataName();
-    byte [] mdBytes = FileUtil.readRawData( new File(mdFile) );
-    Metadata md = MetadataBuilder.read( new ByteArrayInputStream(mdBytes) );
-    
-    assertNotNull( md );
-    assertNotNull( md.getVersioning() );
-    assertNotNull( md.getVersioning().getVersions() );
-    assertFalse( md.getVersioning().getVersions().isEmpty() );
-    
-    List<String> versions = md.getVersioning().getVersions();
-
-    assertEquals( 20, versions.size() );
-    
-    for( int i=0; i<20;i++ )
+
+    public void testWriteContentionSingleArtifact()
+        throws Exception
     {
-      String v = "2.0."+i+"-SNAPSHOT";
-      assertTrue( "Did not find "+v+" in GA metadata "+mdFile+"\n"+new String(mdBytes), versions.contains( v ) );
+        setSnapshots();
+
+        Set<Artifact> set = new HashSet<Artifact>( 40 );
+
+        // prep. artifacts
+        for ( int i = 0; i < 20; i++ )
+        {
+            String si = "" + i;
+
+            DefaultArtifact da =
+                new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-core:2.0.9-20080805.215925-" + si ) );
+            da.setPomBlob( pomBytes );
+            File ab = File.createTempFile( "test-core-", "-bin" );
+            FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), ab );
+            da.setFile( ab );
+            set.add( da );
+        }
+
+        assertEquals( 20, set.size() );
+
+        long start = System.currentTimeMillis();
+        // write 'em
+        writer.writeArtifacts( set );
+
+        System.out.println( "Took " + ( System.currentTimeMillis() - start ) + " millis to write " + set.size()
+            + " artifacts" );
+        System.out.flush();
+
+        // check if the showed up in the repo
+        for ( int i = 0; i < 20; i++ )
+        {
+            String si = "" + i;
+
+            String fn =
+                targetDirectory.getAbsolutePath()
+                    + "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-" + si + ".jar";
+            File af = new File( fn );
+            assertTrue( fn + " does not exist", af.exists() );
+            assertEquals( binarySize, af.length() );
+
+            // is pom there also?
+            fn =
+                targetDirectory.getAbsolutePath()
+                    + "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/maven-core-2.0.9-20080805.215925-" + si + ".pom";
+            File ap = new File( fn );
+            assertTrue( fn + " does not exist", ap.exists() );
+            assertEquals( pomSize, ap.length() );
+        }
+
+        // check GAV metadata has all versions
+        String mdFile =
+            targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-core/2.0.9-SNAPSHOT/" + repo.getMetadataName();
+        byte[] mdBytes = FileUtil.readRawData( new File( mdFile ) );
+        Metadata md = MetadataBuilder.read( new ByteArrayInputStream( mdBytes ) );
+
+        assertNotNull( md );
+        assertNotNull( md.getVersioning() );
+        assertNotNull( md.getVersioning().getVersions() );
+        assertFalse( md.getVersioning().getVersions().isEmpty() );
+
+        List<String> versions = md.getVersioning().getVersions();
+        System.out.println( versions.size() + " versions: " + versions );
+
+        assertEquals( 20, versions.size() );
+
+        for ( int i = 0; i < 20; i++ )
+        {
+            String v = "2.0.9-20080805.215925-" + i;
+            assertTrue( "Did not find " + v + " in GAV metadata " + mdFile + "\n" + new String( mdBytes ),
+                        versions.contains( v ) );
+        }
     }
-    
-    mdFile = targetDirectory.getAbsolutePath()+"/org/apache/maven/maven-core/"+repo.getMetadataName();
-    mdBytes = FileUtil.readRawData( new File(mdFile) );
-    md = MetadataBuilder.read( new ByteArrayInputStream(mdBytes) );
-    
-    assertNotNull( md );
-    assertNotNull( md.getVersioning() );
-    assertNotNull( md.getVersioning().getVersions() );
-    assertFalse( md.getVersioning().getVersions().isEmpty() );
-    
-    versions = md.getVersioning().getVersions();
-    
-    assertEquals( 20, versions.size() );
 
-    for( int i=0; i<20;i++ )
+    public void testWriteContentionMultipleArtifacts()
+        throws Exception
     {
-      String v = "2.0."+i+"-SNAPSHOT";
-      assertTrue( "Did not find "+v+" in GA metadata "+mdFile+"\n"+new String(mdBytes), versions.contains( v ) );
+        setSnapshots();
+
+        Set<Artifact> set = new HashSet<Artifact>( 40 );
+
+        // prep. artifacts
+        for ( int i = 0; i < 20; i++ )
+        {
+            String si = "" + i;
+
+            DefaultArtifact da =
+                new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-core:2.0." + si + "-SNAPSHOT" ) );
+            da.setPomBlob( pomBytes );
+            File ab = File.createTempFile( "test-core-", "-bin" );
+            FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), ab );
+            da.setFile( ab );
+            set.add( da );
+
+            da = new DefaultArtifact( new ArtifactMetadata( "org.apache.maven:maven-mercury:2.0." + si + "-SNAPSHOT" ) );
+            da.setPomBlob( pomBytes );
+            ab = File.createTempFile( "test-mercury-", "-bin" );
+            FileUtil.writeRawData( getClass().getResourceAsStream( "/maven-core-2.0.9.jar" ), ab );
+            da.setFile( ab );
+            set.add( da );
+        }
+
+        assertEquals( 40, set.size() );
+
+        long start = System.currentTimeMillis();
+        // write 'em
+        writer.writeArtifacts( set );
+
+        System.out.println( "Took " + ( System.currentTimeMillis() - start ) + " millis to write " + set.size()
+            + " artifacts" );
+        System.out.flush();
+
+        // check if the showed up in the repo
+        for ( int i = 0; i < 20; i++ )
+        {
+            String si = "" + i;
+
+            String fn =
+                targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-core/2.0." + si
+                    + "-SNAPSHOT/maven-core-2.0." + si + "-SNAPSHOT.jar";
+            File af =
+                new File( targetDirectory, "/org/apache/maven/maven-core/2.0." + si + "-SNAPSHOT/maven-core-2.0." + si
+                    + "-SNAPSHOT.jar" );
+            assertTrue( fn + " does not exist", af.exists() );
+            assertEquals( binarySize, af.length() );
+
+            fn =
+                targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-core/2.0." + si
+                    + "-SNAPSHOT/maven-core-2.0." + si + "-SNAPSHOT.pom";
+            File ap =
+                new File( targetDirectory, "/org/apache/maven/maven-core/2.0." + si + "-SNAPSHOT/maven-core-2.0." + si
+                    + "-SNAPSHOT.pom" );
+            assertTrue( fn + " does not exist", ap.exists() );
+            assertEquals( pomSize, ap.length() );
+
+            fn =
+                targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-mercury/2.0." + si
+                    + "-SNAPSHOT/maven-mercury-2.0." + i + "-SNAPSHOT.jar";
+            af =
+                new File( targetDirectory, "/org/apache/maven/maven-mercury/2.0." + si + "-SNAPSHOT/maven-mercury-2.0."
+                    + i + "-SNAPSHOT.jar" );
+            assertTrue( fn + " does not xist", af.exists() );
+            assertEquals( binarySize, af.length() );
+
+            fn =
+                targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-mercury/2.0." + si
+                    + "-SNAPSHOT/maven-mercury-2.0." + i + "-SNAPSHOT.pom";
+            ap =
+                new File( targetDirectory, "/org/apache/maven/maven-mercury/2.0." + si + "-SNAPSHOT/maven-mercury-2.0."
+                    + i + "-SNAPSHOT.pom" );
+            assertTrue( ap.exists() );
+            assertEquals( pomSize, ap.length() );
+        }
+
+        // check GA metadata has all versions
+        String mdFile = targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-mercury/" + repo.getMetadataName();
+        byte[] mdBytes = FileUtil.readRawData( new File( mdFile ) );
+        Metadata md = MetadataBuilder.read( new ByteArrayInputStream( mdBytes ) );
+
+        assertNotNull( md );
+        assertNotNull( md.getVersioning() );
+        assertNotNull( md.getVersioning().getVersions() );
+        assertFalse( md.getVersioning().getVersions().isEmpty() );
+
+        List<String> versions = md.getVersioning().getVersions();
+
+        assertEquals( 20, versions.size() );
+
+        for ( int i = 0; i < 20; i++ )
+        {
+            String v = "2.0." + i + "-SNAPSHOT";
+            assertTrue( "Did not find " + v + " in GA metadata " + mdFile + "\n" + new String( mdBytes ),
+                        versions.contains( v ) );
+        }
+
+        mdFile = targetDirectory.getAbsolutePath() + "/org/apache/maven/maven-core/" + repo.getMetadataName();
+        mdBytes = FileUtil.readRawData( new File( mdFile ) );
+        md = MetadataBuilder.read( new ByteArrayInputStream( mdBytes ) );
+
+        assertNotNull( md );
+        assertNotNull( md.getVersioning() );
+        assertNotNull( md.getVersioning().getVersions() );
+        assertFalse( md.getVersioning().getVersions().isEmpty() );
+
+        versions = md.getVersioning().getVersions();
+
+        assertEquals( 20, versions.size() );
+
+        for ( int i = 0; i < 20; i++ )
+        {
+            String v = "2.0." + i + "-SNAPSHOT";
+            assertTrue( "Did not find " + v + " in GA metadata " + mdFile + "\n" + new String( mdBytes ),
+                        versions.contains( v ) );
+        }
     }
-  }
-  
+
 }