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
+    }
 }

Reply via email to