This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new a3304f026 Bug: GH-1703 Gaps in G segments resets result (#1706)
a3304f026 is described below
commit a3304f0266b0f878b290ebbca513ca65fe558f8b
Author: Tamas Cservenak <[email protected]>
AuthorDate: Thu Dec 11 16:00:41 2025 +0100
Bug: GH-1703 Gaps in G segments resets result (#1706)
GroupTree did reset accepted state causing middle elements
to become forbidden.
---
.../internal/impl/filter/ruletree/GroupTree.java | 2 +-
.../impl/filter/ruletree/GroupTreeTest.java | 33 ++++++++++++++++++++++
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTree.java
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTree.java
index b4e29dfbd..87d0023b1 100644
---
a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTree.java
+++
b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTree.java
@@ -126,7 +126,7 @@ public class GroupTree extends Node {
}
if (currentNode.isStop() && groupElements.equals(current)) {
accepted = currentNode.isAllow();
- } else if (!currentNode.isStop()) {
+ } else if (!currentNode.isStop() && currentNode.isAllow() != null)
{
accepted = currentNode.isAllow();
}
}
diff --git
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTreeTest.java
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTreeTest.java
index 1cdecd136..b47d54d9a 100644
---
a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTreeTest.java
+++
b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/ruletree/GroupTreeTest.java
@@ -169,4 +169,37 @@ public class GroupTreeTest {
assertEquals(implicitResults, explicitResults);
}
+
+ @Test
+ void gh1703One() {
+ GroupTree groupTree;
+
+ // REPRODUCER as given
+ groupTree = new GroupTree("root");
+ // this is redundant, as 'org.apache' IMPLIES
'org.apache.maven.plugins'
+ groupTree.loadNodes(Stream.of("# comment", "", "org.apache",
"org.apache.maven.plugins"));
+
+ assertTrue(groupTree.acceptedGroupId("org.apache")); // this is given
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven")); // implied
by first
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven.plugins")); //
implied by first (line is redundant)
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven.plugins.foo"));
// implied by first
+
+ // FIXED
+ groupTree = new GroupTree("root");
+ groupTree.loadNodes(Stream.of("# comment", "", "=org.apache",
"org.apache.maven.plugins"));
+
+ assertTrue(groupTree.acceptedGroupId("org.apache")); // this is given
(=)
+ assertFalse(groupTree.acceptedGroupId("org.apache.maven")); // not
allowed
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven.plugins")); //
this is given (and below)
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven.plugins.foo"));
// implied by above
+
+ // MIXED
+ groupTree = new GroupTree("root");
+ groupTree.loadNodes(Stream.of("# comment", "", "org.apache",
"!=org.apache.maven.plugins"));
+
+ assertTrue(groupTree.acceptedGroupId("org.apache")); // this is given
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven")); // implied
by first
+ assertFalse(groupTree.acceptedGroupId("org.apache.maven.plugins")); //
this is given (!=)
+ assertTrue(groupTree.acceptedGroupId("org.apache.maven.plugins.foo"));
// implied by first
+ }
}