blob: 458281defa39132efd36a304964e26f495c921bb [file] [log] [blame]
package org.apache.maven.index.artifact;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import org.apache.maven.index.artifact.Gav;
import org.apache.maven.index.artifact.M1GavCalculator;
import junit.framework.TestCase;
public class M1GavCalculatorTest
extends TestCase
{
private M1GavCalculator gavCalculator;
private SimpleDateFormat formatter = new SimpleDateFormat( "yyyyMMdd.HHmmss" );
@Override
public void setUp()
throws Exception
{
super.setUp();
gavCalculator = new M1GavCalculator();
}
protected Long parseTimestamp( String timeStamp )
throws ParseException
{
if ( timeStamp == null )
{
return null;
}
else
{
return Long.valueOf( formatter.parse( timeStamp ).getTime() );
}
}
public void testGav()
throws Exception
{
Gav gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0RC1-SNAPSHOT-javadoc.jar" );
assertEquals( "org.jruby", gav.getGroupId() );
assertEquals( "jruby", gav.getArtifactId() );
assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
assertEquals( "javadoc", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "jruby-1.0RC1-SNAPSHOT-javadoc.jar", gav.getName() );
assertEquals( true, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
String path = gavCalculator.gavToPath( gav );
assertEquals( "/org.jruby/javadocs/jruby-1.0RC1-SNAPSHOT-javadoc.jar", path );
gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar" );
assertEquals( "org.jruby", gav.getGroupId() );
assertEquals( "jruby", gav.getArtifactId() );
assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "jruby-1.0RC1-SNAPSHOT.jar", gav.getName() );
assertEquals( true, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar", path );
gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar.md5" );
assertEquals( "org.jruby", gav.getGroupId() );
assertEquals( "jruby", gav.getArtifactId() );
assertEquals( "1.0RC1-SNAPSHOT", gav.getVersion() );
assertEquals( "1.0RC1-SNAPSHOT", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "jruby-1.0RC1-SNAPSHOT.jar.md5", gav.getName() );
assertEquals( true, gav.isSnapshot() );
assertEquals( true, gav.isHash() );
assertEquals( Gav.HashType.md5, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/org.jruby/jars/jruby-1.0RC1-SNAPSHOT.jar.md5", path );
gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0-javadoc.jar" );
assertEquals( "org.jruby", gav.getGroupId() );
assertEquals( "jruby", gav.getArtifactId() );
assertEquals( "1.0", gav.getVersion() );
assertEquals( "1.0", gav.getBaseVersion() );
assertEquals( "javadoc", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "jruby-1.0-javadoc.jar", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/org.jruby/javadocs/jruby-1.0-javadoc.jar", path );
gav = gavCalculator.pathToGav( "/org.jruby/javadocs/jruby-1.0-javadoc.jar.sha1" );
assertEquals( "org.jruby", gav.getGroupId() );
assertEquals( "jruby", gav.getArtifactId() );
assertEquals( "1.0", gav.getVersion() );
assertEquals( "1.0", gav.getBaseVersion() );
assertEquals( "javadoc", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "jruby-1.0-javadoc.jar.sha1", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( true, gav.isHash() );
assertEquals( Gav.HashType.sha1, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/org.jruby/javadocs/jruby-1.0-javadoc.jar.sha1", path );
gav = gavCalculator.pathToGav( "/org.jruby/jars/jruby-1.0.jar" );
assertEquals( "org.jruby", gav.getGroupId() );
assertEquals( "jruby", gav.getArtifactId() );
assertEquals( "1.0", gav.getVersion() );
assertEquals( "1.0", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "jruby-1.0.jar", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/org.jruby/jars/jruby-1.0.jar", path );
gav = gavCalculator.pathToGav( "/maven/jars/dom4j-1.7-20060614.jar" );
assertEquals( "maven", gav.getGroupId() );
assertEquals( "dom4j", gav.getArtifactId() );
assertEquals( "1.7-20060614", gav.getVersion() );
assertEquals( "1.7-20060614", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "dom4j-1.7-20060614.jar", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/maven/jars/dom4j-1.7-20060614.jar", path );
gav = gavCalculator.pathToGav( "maven/java-sources/velocity-1.5-SNAPSHOT-sources.jar" );
assertEquals( "maven", gav.getGroupId() );
assertEquals( "velocity", gav.getArtifactId() );
assertEquals( "1.5-SNAPSHOT", gav.getVersion() );
assertEquals( "1.5-SNAPSHOT", gav.getBaseVersion() );
assertEquals( "sources", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "velocity-1.5-SNAPSHOT-sources.jar", gav.getName() );
assertEquals( true, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/maven/java-sources/velocity-1.5-SNAPSHOT-sources.jar", path );
gav = gavCalculator.pathToGav( "castor/jars/castor-0.9.9-xml.jar" );
assertEquals( "castor", gav.getGroupId() );
assertEquals( "castor", gav.getArtifactId() );
assertEquals( "0.9.9-xml", gav.getVersion() );
assertEquals( "0.9.9-xml", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "castor-0.9.9-xml.jar", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/castor/jars/castor-0.9.9-xml.jar", path );
gav = gavCalculator.pathToGav( "/org.slf4j/poms/slf4j-log4j12-1.4.3.pom" );
assertEquals( "org.slf4j", gav.getGroupId() );
assertEquals( "slf4j-log4j12", gav.getArtifactId() );
assertEquals( "1.4.3", gav.getVersion() );
assertEquals( "1.4.3", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "pom", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "slf4j-log4j12-1.4.3.pom", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/org.slf4j/poms/slf4j-log4j12-1.4.3.pom", path );
// TODO: fix this!
/* There is an "Oh" letter at the end, not a zero! */
gav = gavCalculator.pathToGav( "/xpp3/poms/xpp3_min-1.1.3.4.O.pom" );
assertEquals( "xpp3", gav.getGroupId() );
assertEquals( "xpp3_min", gav.getArtifactId() );
assertEquals( "1.1.3.4.O", gav.getVersion() );
assertEquals( "1.1.3.4.O", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "pom", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "xpp3_min-1.1.3.4.O.pom", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/xpp3/poms/xpp3_min-1.1.3.4.O.pom", path );
}
public void testNEXUS1336()
throws Exception
{
Gav gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar" );
assertEquals( "castor", gav.getGroupId() );
assertEquals( "castor-ejb", gav.getArtifactId() );
assertEquals( "1.0.7-SNAPSHOT", gav.getVersion() );
assertEquals( "1.0.7-SNAPSHOT", gav.getBaseVersion() );
assertEquals( "client", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "castor-ejb-1.0.7-SNAPSHOT-client.jar", gav.getName() );
assertEquals( true, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
String path = gavCalculator.gavToPath( gav );
assertEquals( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar", path );
gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7.jar" );
assertEquals( "castor", gav.getGroupId() );
assertEquals( "castor-ejb", gav.getArtifactId() );
assertEquals( "1.0.7", gav.getVersion() );
assertEquals( "1.0.7", gav.getBaseVersion() );
assertEquals( null, gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "castor-ejb-1.0.7.jar", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/castor/jars/castor-ejb-1.0.7.jar", path );
gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1" );
assertEquals( "castor", gav.getGroupId() );
assertEquals( "castor-ejb", gav.getArtifactId() );
assertEquals( "1.0.7-SNAPSHOT", gav.getVersion() );
assertEquals( "1.0.7-SNAPSHOT", gav.getBaseVersion() );
assertEquals( "client", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1", gav.getName() );
assertEquals( true, gav.isSnapshot() );
assertEquals( true, gav.isHash() );
assertEquals( Gav.HashType.sha1, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/castor/ejbs/castor-ejb-1.0.7-SNAPSHOT-client.jar.sha1", path );
gav = gavCalculator.pathToGav( "/castor/ejbs/castor-ejb-1.0.7-client.jar" );
assertEquals( "castor", gav.getGroupId() );
assertEquals( "castor-ejb", gav.getArtifactId() );
assertEquals( "1.0.7", gav.getVersion() );
assertEquals( "1.0.7", gav.getBaseVersion() );
assertEquals( "client", gav.getClassifier() );
assertEquals( "jar", gav.getExtension() );
assertEquals( null, gav.getSnapshotBuildNumber() );
assertEquals( null, gav.getSnapshotTimeStamp() );
assertEquals( "castor-ejb-1.0.7-client.jar", gav.getName() );
assertEquals( false, gav.isSnapshot() );
assertEquals( false, gav.isHash() );
assertEquals( null, gav.getHashType() );
path = gavCalculator.gavToPath( gav );
assertEquals( "/castor/ejbs/castor-ejb-1.0.7-client.jar", path );
}
public void testGavExtreme()
throws Exception
{
Gav gav = gavCalculator.pathToGav( "/" );
assertEquals( null, gav );
gav = gavCalculator.pathToGav( "/some/stupid/path" );
assertEquals( null, gav );
gav = gavCalculator.pathToGav( "/some/stupid/path/more/in/it" );
assertEquals( null, gav );
gav = gavCalculator.pathToGav( "/something/that/looks/" );
assertEquals( null, gav );
gav = gavCalculator.pathToGav( "/something/that/like-an-artifact.blah" );
assertEquals( null, gav );
// assertEquals( false, gav.isChecksum() );
// assertEquals( false, gav.isPrimary() );
// assertEquals( false, gav.isSnapshot() );
gav = gavCalculator.pathToGav( "/something/that/like-an-artifact.pom" );
assertEquals( null, gav );
// assertEquals( false, gav.isChecksum() );
// assertEquals( false, gav.isPrimary() );
// assertEquals( false, gav.isSnapshot() );
gav = gavCalculator.pathToGav( "/something/that/maven-metadata.xml" );
assertEquals( null, gav );
// assertEquals( false, gav.isChecksum() );
// assertEquals( false, gav.isPrimary() );
// assertEquals( false, gav.isSnapshot() );
gav = gavCalculator.pathToGav( "/something/that/like-SNAPSHOT/maven-metadata.xml" );
assertEquals( null, gav );
}
}