You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2024/01/27 13:23:54 UTC

(maven-resolver) branch maven-resolver-1.9.x updated: [1.9.x][MRESOLVER-483] Fix path concatenation logic (#420)

This is an automated email from the ASF dual-hosted git repository.

cstamas pushed a commit to branch maven-resolver-1.9.x
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git


The following commit(s) were added to refs/heads/maven-resolver-1.9.x by this push:
     new fc969c25 [1.9.x][MRESOLVER-483] Fix path concatenation logic (#420)
fc969c25 is described below

commit fc969c2570041bb72c3f0141ff4957e8754f365c
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Sat Jan 27 14:23:48 2024 +0100

    [1.9.x][MRESOLVER-483] Fix path concatenation logic (#420)
    
    As iterator may have more, but no file check is done
    
    ---
    
    https://issues.apache.org/jira/browse/MRESOLVER-483
---
 .../AbstractDepthFirstNodeListGenerator.java       |  4 +--
 ...actDepthFirstNodeListGeneratorTestSupport.java} | 40 +++++++++++++++++-----
 .../visitor/PostorderNodeListGeneratorTest.java    | 20 +----------
 .../visitor/PreorderNodeListGeneratorTest.java     | 21 +-----------
 4 files changed, 35 insertions(+), 50 deletions(-)

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 6293dda0..abea94bd 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 @@ abstract class AbstractDepthFirstNodeListGenerator implements DependencyVisitor
             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/PreorderNodeListGeneratorTest.java b/maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGeneratorTestSupport.java
similarity index 56%
copy from maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/PreorderNodeListGeneratorTest.java
copy to maven-resolver-util/src/test/java/org/eclipse/aether/util/graph/visitor/AbstractDepthFirstNodeListGeneratorTestSupport.java
index c169d522..ca3b8ddf 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/AbstractDepthFirstNodeListGeneratorTestSupport.java
@@ -18,21 +18,24 @@
  */
 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.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
-public class PreorderNodeListGeneratorTest {
+public abstract class AbstractDepthFirstNodeListGeneratorTestSupport {
 
-    private DependencyNode parse(String resource) throws Exception {
+    protected DependencyNode parse(String resource) throws Exception {
         return new DependencyGraphParser("visitor/ordered-list/").parseResource(resource);
     }
 
-    private void assertSequence(List<DependencyNode> actual, String... expected) {
+    protected void assertSequence(List<DependencyNode> actual, String... expected) {
         assertEquals(actual.toString(), expected.length, actual.size());
         for (int i = 0; i < expected.length; i++) {
             DependencyNode node = actual.get(i);
@@ -44,22 +47,41 @@ public class PreorderNodeListGeneratorTest {
     }
 
     @Test
-    public void testOrdering() throws Exception {
+    public void testClasspath() throws Exception {
         DependencyNode root = parse("simple.txt");
 
         PreorderNodeListGenerator visitor = new PreorderNodeListGenerator();
         root.accept(visitor);
 
-        assertSequence(visitor.getNodes(), "a", "b", "c", "d", "e");
+        assertEquals(visitor.getClassPath(), "");
     }
 
     @Test
-    public void testDuplicateSuppression() throws Exception {
-        DependencyNode root = parse("cycles.txt");
+    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);
 
-        assertSequence(visitor.getNodes(), "a", "b", "c", "d", "e");
+        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 116c08b1..84fcc3dc 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<DependencyNode> 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 c169d522..72576874 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<DependencyNode> 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");