You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by sp...@apache.org on 2017/10/16 15:20:43 UTC

[30/47] tinkerpop git commit: TINKERPOP-1784 Provided translation for python specific syntax

TINKERPOP-1784 Provided translation for python specific syntax

Included a way to specify element identifiers in feature files.


Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/8325d46b
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/8325d46b
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/8325d46b

Branch: refs/heads/TINKERPOP-1784
Commit: 8325d46b116d2fe239260df92697d1d22ebb7271
Parents: 5210453
Author: Stephen Mallette <sp...@genoprime.com>
Authored: Wed Sep 27 12:16:08 2017 -0400
Committer: Stephen Mallette <sp...@genoprime.com>
Committed: Mon Oct 16 11:19:30 2017 -0400

----------------------------------------------------------------------
 .../src/main/jython/radish/feature_steps.py        | 17 +++++++++++++----
 gremlin-test/features/filter/Has.feature           | 13 +++++++++++++
 gremlin-test/features/map/Select.feature           |  2 +-
 3 files changed, 27 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8325d46b/gremlin-python/src/main/jython/radish/feature_steps.py
----------------------------------------------------------------------
diff --git a/gremlin-python/src/main/jython/radish/feature_steps.py b/gremlin-python/src/main/jython/radish/feature_steps.py
index 8ef0f1b..989e781 100644
--- a/gremlin-python/src/main/jython/radish/feature_steps.py
+++ b/gremlin-python/src/main/jython/radish/feature_steps.py
@@ -25,6 +25,8 @@ from gremlin_python.process.traversal import P, Scope, Column
 from radish import given, when, then
 from hamcrest import *
 
+regex_as = re.compile(r"\.as\(")
+regex_in = re.compile(r"\.in\(")
 
 @given("the {graph_name:w} graph")
 def choose_graph(step, graph_name):
@@ -52,7 +54,7 @@ def translate_traversal(step):
     if hasattr(step.context, "traversal_params"):
         b.update(step.context.traversal_params)
 
-    step.context.traversal = eval(step.text, b)
+    step.context.traversal = eval(__translate(step.text), b)
 
 
 @when("iterated to list")
@@ -78,9 +80,11 @@ def __convert(val, ctx):
         for key, value in val.items():
             n[__convert(key, ctx)] = __convert(value, ctx)
         return n
-    elif isinstance(val, (str, unicode)) and re.match("d\[.*\]", val):
+    elif isinstance(val, (str, unicode)) and re.match("^d\[.*\]$", val):
         return long(val[2:-1])
-    elif isinstance(val, (str, unicode)) and re.match("v\[.*\]", val):
+    elif isinstance(val, (str, unicode)) and re.match("^v\[.*\]\.id$", val):
+        return ctx.lookup["modern"][val[2:-4]].id
+    elif isinstance(val, (str, unicode)) and re.match("^v\[.*\]$", val):
         return ctx.lookup["modern"][val[2:-1]]
     elif isinstance(val, unicode):
         return val.encode('utf-8')
@@ -141,4 +145,9 @@ def __unordered_assertion(step):
         else:
             raise ValueError("unknown type of " + line[0])
 
-    assert_that(len(results_to_test), is_(0))
\ No newline at end of file
+    assert_that(len(results_to_test), is_(0))
+
+
+def __translate(traversal):
+    replaced = regex_as.sub(".as_(", traversal)
+    return regex_in.sub(".in_(", replaced)

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8325d46b/gremlin-test/features/filter/Has.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/filter/Has.feature b/gremlin-test/features/filter/Has.feature
index 0bb82e0..4a2e085 100644
--- a/gremlin-test/features/filter/Has.feature
+++ b/gremlin-test/features/filter/Has.feature
@@ -28,3 +28,16 @@ Feature: Step - has()
       | vertex | josh   |
       | vertex | peter  |
 
+  Scenario: Use hasId() with P
+    Given the modern graph
+    And using the parameter v1 is "v[marko].id"
+    And the traversal of
+    """
+    g.V().in().hasId(P.neq(v1))
+    """
+    When iterated to list
+    Then the result should be unordered
+      | vertex | josh   |
+      | vertex | josh   |
+      | vertex | peter  |
+

http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/8325d46b/gremlin-test/features/map/Select.feature
----------------------------------------------------------------------
diff --git a/gremlin-test/features/map/Select.feature b/gremlin-test/features/map/Select.feature
index e64417a..b2d208c 100644
--- a/gremlin-test/features/map/Select.feature
+++ b/gremlin-test/features/map/Select.feature
@@ -22,7 +22,7 @@ Feature: Step - select()
     And using the parameter v1 is "v[marko]"
     And the traversal of
       """
-      g.V(v1).as_("a").out("knows").as_("b").select("a", "b")
+      g.V(v1).as("a").out("knows").as("b").select("a", "b")
       """
     When iterated to list
     Then the result should be unordered