package org.jboss.windup.rules.apps.java.archives;
import java.io.File;
import java.io.IOException;
import org.jboss.forge.addon.dependencies.Coordinate;
import org.jboss.forge.addon.dependencies.builder.CoordinateBuilder;
import org.jboss.windup.rules.apps.java.archives.identify.InMemoryArchiveIdentificationService;
import org.jboss.windup.rules.apps.java.archives.ignore.SkippedArchives;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* @author <a href="mailto:ozizka@redhat.com">Ondrej Zizka</a>
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public class ArchiveCoordinateIdentificationTest
{
private static final String DATA_PATH = "src/test/resources/";
private static final File SKIPLIST_FILE = new File(DATA_PATH + "/skippedArchives.txt");
InMemoryArchiveIdentificationService identifier = new InMemoryArchiveIdentificationService();
@Test
public void testIdentifyArchive() throws IOException
{
final File mappingFile = new File(DATA_PATH + "/test.archive-metadata.txt");
identifier.addMappingsFrom(mappingFile);
Coordinate gav = identifier.getCoordinate("11856de4eeea74ce134ef3f910ff8d6f989dab2e");
Assert.assertNotNull("IdentifiedArchives.getGAVFromSHA1 returned something", gav);
Assert.assertEquals("org.jboss.windup", gav.getGroupId());
Assert.assertEquals("windup-bootstrap", gav.getArtifactId());
Assert.assertEquals("2.0.0.Beta7", gav.getVersion());
Assert.assertEquals(null, gav.getClassifier());
}
@BeforeClass
public static void loadSkipList()
{
SkippedArchives.load(SKIPLIST_FILE);
}
@Test
public void testSkippedArchivesLoaded() throws IOException
{
Assert.assertNotEquals(0, SkippedArchives.getCount());
}
@Test
public void testArtifactIdSuffixWithWildcards() throws IOException
{
// org.jboss.windup.*:*:*
Assert.assertTrue(SkippedArchives.isSkipped(CoordinateBuilder.create("org.jboss.windup:windup-foo:1.2.3")));
// org.apache.commons.*:*:*
Assert.assertTrue(SkippedArchives.isSkipped(CoordinateBuilder.create("org.apache.commons.foo:commons-foo:1.2.3")));
}
@Test
public void testGroupIdSuffixWithVersionAndClassifierWildcard() throws IOException
{
// org.jboss.bar:bar-*:*:*
Assert.assertTrue(SkippedArchives.isSkipped(CoordinateBuilder.create("org.jboss.bar:bar-foo:1.2.3")));
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("org.jboss.bar:just-foo:1.2.3")));
}
@Test
public void testVersionRangeAndArtifactIdSuffixPattern() throws IOException
{
// org.hibernate.*:hibernate-core:[3.0,5.0)
Assert.assertTrue(SkippedArchives.isSkipped(CoordinateBuilder.create("org.hibernate.foo:hibernate-core:3.2.1")));
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("org.hibernate.foo:hibernate-core:1.2.3")));
Assert.assertTrue(SkippedArchives.isSkipped(CoordinateBuilder.create("org.hibernate.foo:hibernate-core:4.2.1")));
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("org.hibernate.foo:hibernate-core:5.0")));
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("org.hibernate.foo:hibernate-core:5.2.5-SNAPSHOT")));
}
@Test
public void testAllButClassifier() throws IOException
{
// org.freemarker:freemarker-core:3.1
Assert.assertTrue(SkippedArchives.isSkipped(CoordinateBuilder.create("org.freemarker.foo:freemarker-core:3.1")));
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("org.freemarker.foo:freemarker-core:3.1.1")));
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("org.freemarker:freemarker-core:4.2.1")));
}
@Test
public void testUnlistedArchivesAreNotSkipped() throws IOException
{
Assert.assertFalse(SkippedArchives.isSkipped(CoordinateBuilder.create("com.example.foo:example-foo:1.2.3")));
}
}