/** * Copyright (c) 2008-2011 Sonatype, Inc. * All rights reserved. Includes the third-party code listed at http://www.sonatype.com/products/nexus/attributions. * * This program is free software: you can redistribute it and/or modify it only under the terms of the GNU Affero General * Public License Version 3 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License Version 3 * for more details. * * You should have received a copy of the GNU Affero General Public License Version 3 along with this program. If not, see * http://www.gnu.org/licenses. * * Sonatype Nexus (TM) Open Source Version is available from Sonatype, Inc. Sonatype and Sonatype Nexus are trademarks of * Sonatype, Inc. Apache Maven is a trademark of the Apache Foundation. M2Eclipse is a trademark of the Eclipse Foundation. * All other trademarks are the property of their respective owners. */ package org.sonatype.nexus.proxy.maven.metadata; import java.util.ArrayList; import java.util.Collection; import java.util.List; import junit.framework.TestCase; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.SnapshotVersion; import org.apache.maven.index.artifact.Gav; import org.apache.maven.index.artifact.M2GavCalculator; /** * @author juven */ public class MetadataHelperTest extends TestCase { public void testVersioningArtifactDirectory() throws Exception { List<String> orderedVersions = new ArrayList<String>(); orderedVersions.add( "1.0.0-alpha-5" ); orderedVersions.add( "1.0.0-beta-3" ); orderedVersions.add( "1.0.0-beta-4" ); orderedVersions.add( "1.0.0-beta-6-SNAPSHOT" ); orderedVersions.add( "1.0.0" ); orderedVersions.add( "1.0.1" ); orderedVersions.add( "1.0.3-SNAPSHOT" ); orderedVersions.add( "1.1-M1" ); orderedVersions.add( "1.2.0-beta-1" ); orderedVersions.add( "1.2.0-SNAPSHOT" ); orderedVersions.add( "1.2.0" ); orderedVersions.add( "1.2.0.5-SNAPSHOT" ); orderedVersions.add( "1.3.0-SNAPSHOT" ); List<String> unorderedVersions = new ArrayList<String>(); unorderedVersions.add( "1.3.0-SNAPSHOT" ); unorderedVersions.add( "1.2.0-SNAPSHOT" ); unorderedVersions.add( "1.2.0.5-SNAPSHOT" ); unorderedVersions.add( "1.0.1" ); unorderedVersions.add( "1.0.3-SNAPSHOT" ); unorderedVersions.add( "1.1-M1" ); unorderedVersions.add( "1.0.0-alpha-5" ); unorderedVersions.add( "1.2.0" ); unorderedVersions.add( "1.2.0-beta-1" ); unorderedVersions.add( "1.0.0" ); unorderedVersions.add( "1.0.0-beta-3" ); unorderedVersions.add( "1.0.0-beta-4" ); unorderedVersions.add( "1.0.0-beta-6-SNAPSHOT" ); Metadata metadata = new Metadata(); new ArtifactDirMetadataProcessor( null ).versioning( metadata, unorderedVersions ); assertEquals( orderedVersions, metadata.getVersioning().getVersions() ); } public void testVersioningSnapshotVersionDirectory() throws Exception { List<String> snapshotArtifacts = new ArrayList<String>(); snapshotArtifacts.add( "nexus-api-1.2.0-20081022.180215-1.pom" ); snapshotArtifacts.add( "nexus-api-1.2.0-20081022.182430-2.pom" ); snapshotArtifacts.add( "nexus-api-1.2.0-20081022.184527-3.tar.gz" ); snapshotArtifacts.add( "nexus-api-1.2.0-20081023.152127-4.jar" ); snapshotArtifacts.add( "nexus-api-1.2.0-20081024.111337-23-sources.jar" ); snapshotArtifacts.add( "nexus-api-1.2.0-20081025.143218-32.pom" ); snapshotArtifacts.add( "nexus-api-1.2.0-SNAPSHOT.pom" ); Metadata metadata = new Metadata(); metadata.setGroupId( "org.sonatype.nexus" ); metadata.setArtifactId( "nexus-api" ); metadata.setVersion( "1.2.0-SNAPSHOT" ); new VersionDirMetadataProcessor( null ).versioning( metadata, toGavs( snapshotArtifacts ) ); assertEquals( "20081025.143218", metadata.getVersioning().getSnapshot().getTimestamp() ); assertEquals( 32, metadata.getVersioning().getSnapshot().getBuildNumber() ); List<SnapshotVersion> snapshots = metadata.getVersioning().getSnapshotVersions(); assertEquals( 4, snapshots.size() ); for ( SnapshotVersion snap : snapshots ) { if ( snap.getClassifier() == null && "pom".equals( snap.getExtension() ) ) { assertEquals( "20081025143218", snap.getUpdated() ); assertEquals( "1.2.0-20081025.143218-32", snap.getVersion() ); } else if ( snap.getClassifier() == null && "jar".equals( snap.getExtension() ) ) { assertEquals( "20081023152127", snap.getUpdated() ); assertEquals( "1.2.0-20081023.152127-4", snap.getVersion() ); } else if ( snap.getClassifier() == null && "tar.gz".equals( snap.getExtension() ) ) { assertEquals( "20081022184527", snap.getUpdated() ); assertEquals( "1.2.0-20081022.184527-3", snap.getVersion() ); } else if ( "sources".equals( snap.getClassifier() ) && "jar".equals( snap.getExtension() ) ) { assertEquals( "20081024111337", snap.getUpdated() ); assertEquals( "1.2.0-20081024.111337-23", snap.getVersion() ); } else { fail( "Unexpected e:" + snap.getExtension() + " c:" + snap.getClassifier() ); } } } private Collection<Gav> toGavs( List<String> items ) throws Exception { String path = "org/sonatype/nexus/nexus-api/1.2.0-SNAPSHOT/"; M2GavCalculator calc = new M2GavCalculator(); List<Gav> gavs = new ArrayList<Gav>(); for ( String item : items ) { gavs.add( calc.pathToGav( path + item ) ); } return gavs; } }