diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java index 6293dda08..abea94bd3 100644 --- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java +++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGenerator.java @@ -135,10 +135,10 @@ public String getClassPath() { if (node.getDependency() != null) { Artifact artifact = node.getDependency().getArtifact(); if (artifact.getFile() != null) { - buffer.append(artifact.getFile().getAbsolutePath()); - if (it.hasNext()) { + if (buffer.length() != 0) { buffer.append(File.pathSeparatorChar); } + buffer.append(artifact.getFile().getAbsolutePath()); } } } diff --git a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGeneratorTestSupport.java b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGeneratorTestSupport.java new file mode 100644 index 000000000..ca3b8ddf4 --- /dev/null +++ b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGeneratorTestSupport.java @@ -0,0 +1,87 @@ +/* + * 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. + */ +package org.eclipse.aether.util.graph.visitor; + +import java.io.File; +import java.util.List; + +import org.eclipse.aether.graph.DependencyNode; +import org.eclipse.aether.graph.DependencyVisitor; +import org.eclipse.aether.internal.test.util.DependencyGraphParser; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public abstract class AbstractDepthFirstNodeListGeneratorTestSupport { + + protected DependencyNode parse(String resource) throws Exception { + return new DependencyGraphParser("visitor/ordered-list/").parseResource(resource); + } + + protected void assertSequence(List actual, String... expected) { + assertEquals(actual.toString(), expected.length, actual.size()); + for (int i = 0; i < expected.length; i++) { + DependencyNode node = actual.get(i); + assertEquals( + actual.toString(), + expected[i], + node.getDependency().getArtifact().getArtifactId()); + } + } + + @Test + public void testClasspath() throws Exception { + DependencyNode root = parse("simple.txt"); + + PreorderNodeListGenerator visitor = new PreorderNodeListGenerator(); + root.accept(visitor); + + assertEquals(visitor.getClassPath(), ""); + } + + @Test + public void testFullyResolverClasspath() throws Exception { + DependencyNode root = parse("simple.txt"); + + DependencyVisitor fileSetter = new DependencyVisitor() { + @Override + public boolean visitEnter(DependencyNode node) { + node.setArtifact( + node.getArtifact().setFile(new File(node.getArtifact().getArtifactId()))); + return true; + } + + @Override + public boolean visitLeave(DependencyNode node) { + return true; + } + }; + root.accept(fileSetter); + + PreorderNodeListGenerator visitor = new PreorderNodeListGenerator(); + root.accept(visitor); + + String classpath = visitor.getClassPath(); + assertEquals(5, classpath.split(File.pathSeparator).length); + for (File file : visitor.getFiles()) { + assertTrue("missing: " + file, classpath.contains(file.getAbsolutePath())); + } + } +} diff --git a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java index 116c08b10..84fcc3dca 100644 --- a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java +++ b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PostorderNodeListGeneratorTest.java @@ -18,30 +18,12 @@ */ package org.eclipse.aether.util.graph.visitor; -import java.util.List; - import org.eclipse.aether.graph.DependencyNode; -import org.eclipse.aether.internal.test.util.DependencyGraphParser; import org.junit.Test; import static org.junit.Assert.*; -public class PostorderNodeListGeneratorTest { - - private DependencyNode parse(String resource) throws Exception { - return new DependencyGraphParser("visitor/ordered-list/").parseResource(resource); - } - - private void assertSequence(List actual, String... expected) { - assertEquals(actual.toString(), expected.length, actual.size()); - for (int i = 0; i < expected.length; i++) { - DependencyNode node = actual.get(i); - assertEquals( - actual.toString(), - expected[i], - node.getDependency().getArtifact().getArtifactId()); - } - } +public class PostorderNodeListGeneratorTest extends AbstractDepthFirstNodeListGeneratorTestSupport { @Test public void testOrdering() throws Exception { diff --git a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java index c169d522d..72576874f 100644 --- a/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java +++ b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java @@ -18,31 +18,12 @@ */ package org.eclipse.aether.util.graph.visitor; -import java.util.List; - import org.eclipse.aether.graph.DependencyNode; -import org.eclipse.aether.internal.test.util.DependencyGraphParser; import org.junit.Test; import static org.junit.Assert.*; -public class PreorderNodeListGeneratorTest { - - private DependencyNode parse(String resource) throws Exception { - return new DependencyGraphParser("visitor/ordered-list/").parseResource(resource); - } - - private void assertSequence(List actual, String... expected) { - assertEquals(actual.toString(), expected.length, actual.size()); - for (int i = 0; i < expected.length; i++) { - DependencyNode node = actual.get(i); - assertEquals( - actual.toString(), - expected[i], - node.getDependency().getArtifact().getArtifactId()); - } - } - +public class PreorderNodeListGeneratorTest extends AbstractDepthFirstNodeListGeneratorTestSupport { @Test public void testOrdering() throws Exception { DependencyNode root = parse("simple.txt");