This is an automated email from the ASF dual-hosted git repository. Cole-Greer pushed a commit to branch GValueFollowupTP4 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 37c5fd0796e9f526bcd5715ec97beb5f34a68b27 Author: Cole Greer <[email protected]> AuthorDate: Tue Jun 9 15:37:09 2026 -0700 Add nested child-traversal GValue binding unit tests to Go and Python Adds unit coverage proving a GValue used inside an anonymous/child traversal has its binding merged into the parent GremlinLang's parameters, mirroring the new JavaScript tests. Assisted-by: Kiro:claude-opus-4.8 --- gremlin-go/driver/gValue_test.go | 15 +++++++++++++++ .../main/python/tests/unit/process/test_gremlin_lang.py | 13 +++++++++++++ 2 files changed, 28 insertions(+) diff --git a/gremlin-go/driver/gValue_test.go b/gremlin-go/driver/gValue_test.go index 5c0fddfa75..6a014ceb57 100644 --- a/gremlin-go/driver/gValue_test.go +++ b/gremlin-go/driver/gValue_test.go @@ -123,4 +123,19 @@ func TestGValue(t *testing.T) { param2 := NewGValue("ids", []int{1, 2, 3}) assert.NotPanics(t, func() { g.Inject(param1).V(param2) }) }) + + t.Run("test gValue nested in child traversal merges bindings", func(t *testing.T) { + g := NewGraphTraversalSource(nil, nil) + gl := g.V().Where(T__.Is(NewGValue("xx1", 1))).GremlinLang + assert.Equal(t, "g.V().where(__.is(xx1))", gl.GetGremlin()) + assert.Equal(t, 1, gl.parameters["xx1"]) + }) + + t.Run("test gValue nested across multiple child traversals merges bindings", func(t *testing.T) { + g := NewGraphTraversalSource(nil, nil) + gl := g.V().Union(T__.V(NewGValue("vid1", 1)), T__.V(NewGValue("vid4", 4))).GremlinLang + assert.Equal(t, "g.V().union(__.V(vid1),__.V(vid4))", gl.GetGremlin()) + assert.Equal(t, 1, gl.parameters["vid1"]) + assert.Equal(t, 4, gl.parameters["vid4"]) + }) } diff --git a/gremlin-python/src/main/python/tests/unit/process/test_gremlin_lang.py b/gremlin-python/src/main/python/tests/unit/process/test_gremlin_lang.py index 473f0ad80f..a733093373 100644 --- a/gremlin-python/src/main/python/tests/unit/process/test_gremlin_lang.py +++ b/gremlin-python/src/main/python/tests/unit/process/test_gremlin_lang.py @@ -546,6 +546,19 @@ class TestGremlinLang(object): assert 'g.inject(ids).V(ids)' == gremlin.get_gremlin() assert val == gremlin.get_parameters().get('ids') + def test_gvalue_nested_in_child_traversal(self): + g = traversal().with_(None) + gremlin = g.V().where(__.is_(GValue('xx1', 1))).gremlin_lang + assert 'g.V().where(__.is(xx1))' == gremlin.get_gremlin() + assert 1 == gremlin.get_parameters().get('xx1') + + def test_gvalue_nested_across_multiple_child_traversals(self): + g = traversal().with_(None) + gremlin = g.V().union(__.V(GValue('vid1', 1)), __.V(GValue('vid4', 4))).gremlin_lang + assert 'g.V().union(__.V(vid1),__.V(vid4))' == gremlin.get_gremlin() + assert 1 == gremlin.get_parameters().get('vid1') + assert 4 == gremlin.get_parameters().get('vid4') + def test_gvalue_mid_string_underscore_accepted(self): g = traversal().with_(None) p = GValue('a_b', 42)
