Skip to content

Commit

Permalink
[1.9.x][MRESOLVER-483] Fix path concatenation logic (#420)
Browse files Browse the repository at this point in the history
As iterator may have more, but no file check is done

---

https://issues.apache.org/jira/browse/MRESOLVER-483
  • Loading branch information
cstamas authored Jan 27, 2024
1 parent a3e620d commit fc969c2
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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<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());
}
}

@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()));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down

0 comments on commit fc969c2

Please sign in to comment.