/* * Capsule * Copyright (c) 2014-2016, Parallel Universe Software Co. All rights reserved. * * This program and the accompanying materials are licensed under the terms * of the Eclipse Public License v1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package capsule; import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.Exclusion; import org.eclipse.aether.repository.RemoteRepository; import org.junit.Test; import static org.junit.Assert.*; public class DependencyManagerTest { /* * This test suite only contains some very localized unit tests. * The DependencyManagerDriver program should be used to test the entire DependencyManager component. */ @Test public void testParseDependency() { Dependency dep; dep = dep("com.acme:foo:1.3:jdk8"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals(0, dep.getExclusions().size()); dep = dep("com.acme:foo:1.3"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals(0, dep.getExclusions().size()); dep = dep("com.acme:foo"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getVersion()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals(0, dep.getExclusions().size()); dep = dep("com.acme:foo::jdk8"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getVersion()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals(0, dep.getExclusions().size()); dep = dep("com.acme:foo:1.3:jdk8(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); dep = dep("com.acme:foo:1.3(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); dep = dep("com.acme:foo(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getVersion()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); dep = dep("com.acme:foo::jdk8(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getVersion()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); dep = dep("com.acme:foo:[1.2,1.3):jdk8(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("[1.2,1.3)", dep.getArtifact().getVersion()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); dep = dep("com.acme:foo:(1,2)(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("(1,2)", dep.getArtifact().getVersion()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); dep = dep("com.acme:foo:(org.apache:log4j,javax.jms:jms-api)"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getVersion()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals(2, dep.getExclusions().size()); assertEquals("org.apache", exc(dep, 0).getGroupId()); assertEquals("log4j", exc(dep, 0).getArtifactId()); assertEquals("javax.jms", exc(dep, 1).getGroupId()); assertEquals("jms-api", exc(dep, 1).getArtifactId()); } @Test public void testParseManagedDependency() { Dependency dep; dep = mandep("com.acme:foo:war:jdk8:1.3"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("war", dep.getArtifact().getExtension()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals(false, dep.isOptional()); assertEquals(0, dep.getExclusions().size()); dep = mandep("com.acme:foo::jdk8:1.3"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getExtension()); assertEquals("jdk8", dep.getArtifact().getClassifier()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals(false, dep.isOptional()); assertEquals(0, dep.getExclusions().size()); dep = mandep("com.acme:foo:war::1.3"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("war", dep.getArtifact().getExtension()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals(false, dep.isOptional()); assertEquals(0, dep.getExclusions().size()); dep = mandep("com.acme:foo:::1.3"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("", dep.getArtifact().getExtension()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals("1.3", dep.getArtifact().getVersion()); assertEquals(false, dep.isOptional()); assertEquals(0, dep.getExclusions().size()); dep = mandep("com.acme:foo:war::-"); assertEquals("com.acme", dep.getArtifact().getGroupId()); assertEquals("foo", dep.getArtifact().getArtifactId()); assertEquals("war", dep.getArtifact().getExtension()); assertEquals("", dep.getArtifact().getClassifier()); assertEquals("", dep.getArtifact().getVersion()); assertEquals(true, dep.isOptional()); assertEquals(0, dep.getExclusions().size()); } @Test public void testParseRepo() { RemoteRepository repo; repo = repo("central"); assertEquals("central", repo.getId()); assertEquals("https://repo1.maven.org/maven2/", repo.getUrl()); repo = repo("central-http"); assertEquals("central", repo.getId()); assertEquals("http://repo1.maven.org/maven2/", repo.getUrl()); repo = repo("jcenter"); assertEquals("jcenter", repo.getId()); assertEquals("https://jcenter.bintray.com/", repo.getUrl()); repo = repo("jcenter-http"); assertEquals("jcenter", repo.getId()); assertEquals("http://jcenter.bintray.com/", repo.getUrl()); repo = repo("local"); assertEquals("local", repo.getId()); assertEquals("file:" + MavenUserSettings.getInstance().getRepositoryHome(), repo.getUrl()); repo = repo("http://foo.com"); assertEquals("http://foo.com", repo.getId()); assertEquals("http://foo.com", repo.getUrl()); repo = repo("foo(http://foo.com)"); assertEquals("foo", repo.getId()); assertEquals("http://foo.com", repo.getUrl()); } private static Dependency dep(String desc) { return DependencyManager.toDependency(desc, "jar"); } private static Dependency mandep(String desc) { return DependencyManager.toManagedDependency(desc); } private static Exclusion exc(Dependency dep, int i) { return dep.getExclusions().toArray(new Exclusion[0])[i]; } private static RemoteRepository repo(String desc) { return DependencyManager.createRepoBuilder(desc).build(); } }