This is an automated email from the ASF dual-hosted git repository. kenhuuu pushed a commit to branch stringify-params in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit 540bb69585fc893e3f8998e290449dc8415dac0e Author: Ken Hu <[email protected]> AuthorDate: Wed Apr 22 13:49:05 2026 -0700 move backslash back to unit test --- .../gremlin/process/traversal/GremlinLangTest.java | 2 ++ .../test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs | 1 - .../Process/Traversal/GremlinLangTests.cs | 8 ++++++++ gremlin-go/driver/cucumber/gremlin.go | 1 - gremlin-js/gremlin-javascript/test/cucumber/gremlin.js | 1 - gremlin-python/src/main/python/tests/feature/gremlin.py | 1 - .../main/python/tests/unit/process/test_gremlin_lang.py | 11 ++++++++--- .../gremlin/language/translator/translations.json | 15 --------------- .../tinkerpop/gremlin/test/features/data/Char.feature | 12 ------------ 9 files changed, 18 insertions(+), 34 deletions(-) diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/GremlinLangTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/GremlinLangTest.java index 48d01cfa32..a86fb444e5 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/GremlinLangTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/process/traversal/GremlinLangTest.java @@ -132,6 +132,8 @@ public class GremlinLangTest { {newG().inject(new HashSet<>(Arrays.asList(1, 2))), "g.inject({1,2})"}, // Character - single quote (no feature equivalent since grammar uses double quotes in feature files) {g.inject('\''), "g.inject(\"'\"c)"}, + // Character - backslash (not in feature file due to Gherkin escaping issues) + {g.inject('\\'), "g.inject(\"\\\\\"c)"}, // Duration - Java-specific: normalization of days to hours, nanosecond precision {g.inject(Duration.ofDays(1).plusHours(12)), "g.inject(Duration(\"PT36H\"))"}, {g.inject(Duration.ofNanos(1)), "g.inject(Duration(\"PT0.000000001S\"))"}, diff --git a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs index 5f0d8a1c72..25c155d360 100644 --- a/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs +++ b/gremlin-dotnet/test/Gremlin.Net.IntegrationTest/Gherkin/Gremlin.cs @@ -242,7 +242,6 @@ namespace Gremlin.Net.IntegrationTest.Gherkin {"g_V_valuesXageX_isXtypeOfXGType_BYTEXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.V().Values<object>("age").Is(P.TypeOf(GType.Byte))}}, {"g_injectXaX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>('a')}}, {"g_injectXescaped_quoteX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>('\"')}}, - {"g_injectXescaped_backslashX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>('\\')}}, {"g_injectXunicodeX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>('\u00E9')}}, {"g_valuesXinitialX_isXtypeOfXGType_CHARXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.AddV((string) "data").Property("initial", 'a'), (g,p) =>g.V().Values<object>("initial").Is(P.TypeOf(GType.Char))}}, {"g_injectXaX_isXeqXaXX", new List<Func<GraphTraversalSource, IDictionary<string, object>, ITraversal>> {(g,p) =>g.Inject<object>('a').Is(P.Eq('a'))}}, diff --git a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs index 47bd8b4f79..e25833ff21 100644 --- a/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs +++ b/gremlin-dotnet/test/Gremlin.Net.UnitTest/Process/Traversal/GremlinLangTests.cs @@ -1042,6 +1042,14 @@ namespace Gremlin.Net.UnitTest.Process.Traversal _g.V("1").Property(Cardinality.Set, map).GremlinLang.GetGremlin()); } + // Character - backslash (not in feature file due to Gherkin escaping issues) + [Fact] + public void g_Inject_Char_Backslash() + { + Assert.Equal("g.inject(\"\\\\\"c)", + _g.Inject((object)'\\').GremlinLang.GetGremlin()); + } + // Character - single quote (no feature equivalent) [Fact] public void g_Inject_Char_SingleQuote() diff --git a/gremlin-go/driver/cucumber/gremlin.go b/gremlin-go/driver/cucumber/gremlin.go index 02419ce829..b20c1ac9fd 100644 --- a/gremlin-go/driver/cucumber/gremlin.go +++ b/gremlin-go/driver/cucumber/gremlin.go @@ -211,7 +211,6 @@ var translationMap = map[string][]func(g *gremlingo.GraphTraversalSource, p map[ "g_V_valuesXageX_isXtypeOfXGType_BYTEXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return g.V().Values("age").Is(gremlingo.P.TypeOf(gremlingo.GType.Byte))}}, "g_injectXaX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return nil}}, "g_injectXescaped_quoteX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return nil}}, - "g_injectXescaped_backslashX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return nil}}, "g_injectXunicodeX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return nil}}, "g_valuesXinitialX_isXtypeOfXGType_CHARXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return nil}}, "g_injectXaX_isXeqXaXX": {func(g *gremlingo.GraphTraversalSource, p map[string]interface{}) *gremlingo.GraphTraversal {return nil}}, diff --git a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js index e783569517..5338791541 100644 --- a/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js +++ b/gremlin-js/gremlin-javascript/test/cucumber/gremlin.js @@ -243,7 +243,6 @@ const gremlins = { g_V_valuesXageX_isXtypeOfXGType_BYTEXX: [function({g}) { return g.V().values("age").is(P.typeOf(GType.byte)) }], g_injectXaX: [function({g}) { return null }], g_injectXescaped_quoteX: [function({g}) { return null }], - g_injectXescaped_backslashX: [function({g}) { return null }], g_injectXunicodeX: [function({g}) { return null }], g_valuesXinitialX_isXtypeOfXGType_CHARXX: [function({g}) { return null }], g_injectXaX_isXeqXaXX: [function({g}) { return null }], diff --git a/gremlin-python/src/main/python/tests/feature/gremlin.py b/gremlin-python/src/main/python/tests/feature/gremlin.py index a70363dca8..e2854391a4 100644 --- a/gremlin-python/src/main/python/tests/feature/gremlin.py +++ b/gremlin-python/src/main/python/tests/feature/gremlin.py @@ -216,7 +216,6 @@ world.gremlins = { 'g_V_valuesXageX_isXtypeOfXGType_BYTEXX': [(lambda g:g.V().values('age').is_(P.type_of(GType.BYTE)))], 'g_injectXaX': [(lambda g:g.inject(SingleChar('a')))], 'g_injectXescaped_quoteX': [(lambda g:g.inject(SingleChar('\"')))], - 'g_injectXescaped_backslashX': [(lambda g:g.inject(SingleChar('\\')))], 'g_injectXunicodeX': [(lambda g:g.inject(SingleChar('\u00E9')))], 'g_valuesXinitialX_isXtypeOfXGType_CHARXX': [(lambda g:g.add_v('data').property('initial', SingleChar('a'))), (lambda g:g.V().values('initial').is_(P.type_of(GType.CHAR)))], 'g_injectXaX_isXeqXaXX': [(lambda g:g.inject(SingleChar('a')).is_(P.eq(SingleChar('a'))))], 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 4f852d8e25..7abfc2fa31 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 @@ -482,16 +482,21 @@ class TestGremlinLang(object): tests.append([g.add_v('test').property('date', datetime(2021, 2, 1, 9, 30, tzinfo=timezone(timedelta(hours=-5)))), "g.addV('test').property('date',datetime(\"2021-02-01T09:30:00-05:00\"))"]) - # Character - single quote (no feature equivalent) + # Character - backslash (not in feature file due to Gherkin escaping issues) # 122 + tests.append([g.inject(SingleChar('\\')), + "g.inject('\\\\'c)"]) + + # Character - single quote (no feature equivalent) + # 123 tests.append([g.inject(SingleChar("'")), "g.inject(\"'\"c)"]) # Duration - Python-specific: microsecond precision, days+hours normalization - # 123 + # 124 tests.append([g.inject(timedelta(microseconds=1)), 'g.inject(Duration("PT0.000001S"))']) - # 124 + # 125 tests.append([g.inject(timedelta(days=1, hours=12)), 'g.inject(Duration("PT36H"))']) diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json index ce4a3b7cd1..d22dd6c53f 100644 --- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json +++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/language/translator/translations.json @@ -3345,21 +3345,6 @@ } ] }, - { - "scenario": "g_injectXescaped_backslashX", - "traversals": [ - { - "original": "g.inject(\"\\\\\"c)", - "language": "g.inject(\"\\\\\"c)", - "canonical": "g.inject(\"\\\\\"c)", - "anonymized": "g.inject(character0)", - "dotnet": "g.Inject<object>('\\\\')", - "groovy": "g.inject('\\\\' as char)", - "java": "g.inject('\\\\')", - "python": "g.inject(SingleChar('\\\\'))" - } - ] - }, { "scenario": "g_injectXunicodeX", "traversals": [ diff --git a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/Char.feature b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/Char.feature index 321bbe6421..94606864c0 100644 --- a/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/Char.feature +++ b/gremlin-test/src/main/resources/org/apache/tinkerpop/gremlin/test/features/data/Char.feature @@ -42,18 +42,6 @@ Feature: Data - CHAR | result | | char["] | - @GraphComputerVerificationInjectionNotSupported - Scenario: g_injectXescaped_backslashX - Given the empty graph - And the traversal of - """ - g.inject("\\"c) - """ - When iterated to list - Then the result should be unordered - | result | - | char[\] | - @GraphComputerVerificationInjectionNotSupported Scenario: g_injectXunicodeX Given the empty graph
