From 7f1295ea2816ffc33bfbe6494d853bb5c9197390 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 30 Jun 2023 11:47:09 +0200 Subject: [PATCH] [MRESOLVER-376] UT for bug This UT on master makes old DF work, while BF break with SOEx. If same UT ran on fixed branch, both pass. Still, seems combo of range+relocation has some other issues as well, as all this works only partially, as the range is not resolved, only first applicant (lowest version in DF and highest version in BF as it sort-reverse the versions). --- https://issues.apache.org/jira/browse/MRESOLVER-376 --- .../DependencyCollectorDelegateTestSupport.java | 17 +++++++++++++++++ .../collect/bf/BfDependencyCollectorTest.java | 5 +++++ .../collect/df/DfDependencyCollectorTest.java | 5 +++++ ...UseRangesAndRelocationDirtyTreeResult_BF.txt | 2 ++ ...UseRangesAndRelocationDirtyTreeResult_DF.txt | 2 ++ ...epsUseRangesAndRelocationDirtyTree_aid_1.ini | 2 ++ ...epsUseRangesAndRelocationDirtyTree_cid_1.ini | 4 ++++ ...epsUseRangesAndRelocationDirtyTree_cid_2.ini | 4 ++++ ...epsUseRangesAndRelocationDirtyTree_cid_3.ini | 4 ++++ ...gesAndRelocationDirtyTree_relocatedcid_1.ini | 1 + ...gesAndRelocationDirtyTree_relocatedcid_2.ini | 1 + ...gesAndRelocationDirtyTree_relocatedcid_3.ini | 1 + .../test/util/IniArtifactDescriptorReader.java | 1 + 13 files changed, 49 insertions(+) create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_BF.txt create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_DF.txt create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_aid_1.ini create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_1.ini create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_2.ini create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_3.ini create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_1.ini create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_2.ini create mode 100644 maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_3.ini diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java index 89a2291e6..087483fcf 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/DependencyCollectorDelegateTestSupport.java @@ -514,6 +514,23 @@ public void testTransitiveDepsUseRangesDirtyTree() throws DependencyCollectionEx protected abstract String getTransitiveDepsUseRangesDirtyTreeResource(); + @Test + public void testTransitiveDepsUseRangesAndRelocationDirtyTree() throws DependencyCollectionException, IOException { + // Note: DF depends on version order (ultimately the order of versions as returned by VersionRangeResolver + // that in case of Maven, means order as in maven-metadata.xml + // BF on the other hand explicitly sorts versions from range in descending order + // + // Hence, the "dirty tree" of two will not match. + DependencyNode root = parser.parseResource(getTransitiveDepsUseRangesAndRelocationDirtyTreeResource()); + Dependency dependency = root.getDependency(); + CollectRequest request = new CollectRequest(dependency, singletonList(repository)); + + CollectResult result = collector.collectDependencies(session, request); + assertEqualSubtree(root, result.getRoot()); + } + + protected abstract String getTransitiveDepsUseRangesAndRelocationDirtyTreeResource(); + private DependencyNode toDependencyResult( final DependencyNode root, final String rootScope, final Boolean optional) { // Make the root artifact resultion result a dependency resolution result for the subtree check. diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java index 870d2ef61..1b6aa2c2c 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/bf/BfDependencyCollectorTest.java @@ -68,6 +68,11 @@ protected String getTransitiveDepsUseRangesDirtyTreeResource() { return "transitiveDepsUseRangesDirtyTreeResult_BF.txt"; } + @Override + protected String getTransitiveDepsUseRangesAndRelocationDirtyTreeResource() { + return "transitiveDepsUseRangesAndRelocationDirtyTreeResult_BF.txt"; + } + private Dependency newDep(String coords, String scope, Collection exclusions) { Dependency d = new Dependency(new DefaultArtifact(coords), scope); return d.setExclusions(exclusions); diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollectorTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollectorTest.java index f07fdc335..963fb69f2 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollectorTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/collect/df/DfDependencyCollectorTest.java @@ -36,4 +36,9 @@ protected void setupCollector() { protected String getTransitiveDepsUseRangesDirtyTreeResource() { return "transitiveDepsUseRangesDirtyTreeResult_DF.txt"; } + + @Override + protected String getTransitiveDepsUseRangesAndRelocationDirtyTreeResource() { + return "transitiveDepsUseRangesAndRelocationDirtyTreeResult_DF.txt"; + } } diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_BF.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_BF.txt new file mode 100644 index 000000000..88c284232 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_BF.txt @@ -0,0 +1,2 @@ +transitiveDepsUseRangesAndRelocationDirtyTree:aid:ext:1 compile ++- transitiveDepsUseRangesAndRelocationDirtyTree:relocatedcid:ext:3 compile diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_DF.txt b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_DF.txt new file mode 100644 index 000000000..3821ff09c --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTreeResult_DF.txt @@ -0,0 +1,2 @@ +transitiveDepsUseRangesAndRelocationDirtyTree:aid:ext:1 compile +\- transitiveDepsUseRangesAndRelocationDirtyTree:relocatedcid:ext:1 compile diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_aid_1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_aid_1.ini new file mode 100644 index 000000000..f2e9a92ad --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_aid_1.ini @@ -0,0 +1,2 @@ +[dependencies] +transitiveDepsUseRangesAndRelocationDirtyTree:cid:ext:[1,3] diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_1.ini new file mode 100644 index 000000000..f191413a9 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_1.ini @@ -0,0 +1,4 @@ +[relocation] +transitiveDepsUseRangesAndRelocationDirtyTree:relocatedcid:ext:1 + +[dependencies] diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_2.ini new file mode 100644 index 000000000..acbe9ff76 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_2.ini @@ -0,0 +1,4 @@ +[relocation] +transitiveDepsUseRangesAndRelocationDirtyTree:relocatedcid:ext:2 + +[dependencies] diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_3.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_3.ini new file mode 100644 index 000000000..4d942eb42 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_cid_3.ini @@ -0,0 +1,4 @@ +[relocation] +transitiveDepsUseRangesAndRelocationDirtyTree:relocatedcid:ext:3 + +[dependencies] diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_1.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_1.ini new file mode 100644 index 000000000..61a252c23 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_1.ini @@ -0,0 +1 @@ +[dependencies] diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_2.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_2.ini new file mode 100644 index 000000000..61a252c23 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_2.ini @@ -0,0 +1 @@ +[dependencies] diff --git a/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_3.ini b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_3.ini new file mode 100644 index 000000000..61a252c23 --- /dev/null +++ b/maven-resolver-impl/src/test/resources/artifact-descriptions/transitiveDepsUseRangesAndRelocationDirtyTree_relocatedcid_3.ini @@ -0,0 +1 @@ +[dependencies] diff --git a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java index 16d7dde9b..5efdced9f 100644 --- a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java +++ b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/IniArtifactDescriptorReader.java @@ -100,6 +100,7 @@ public ArtifactDescriptorResult readArtifactDescriptor( ArtifactDescription data = reader.parse(resourceName); if (data.getRelocation() != null) { result.addRelocation(artifact); + result.setArtifact(data.getRelocation()); artifact = data.getRelocation(); } else { result.setArtifact(artifact);