[
https://issues.apache.org/jira/browse/TINKERPOP-1784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16249569#comment-16249569
]
ASF GitHub Bot commented on TINKERPOP-1784:
-------------------------------------------
Github user jorgebay commented on a diff in the pull request:
https://github.com/apache/tinkerpop/pull/747#discussion_r150542730
--- Diff: gremlin-python/src/main/jython/radish/feature_steps.py ---
@@ -0,0 +1,231 @@
+'''
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+'''
+
+import json
+import re
+from gremlin_python.structure.graph import Graph, Path
+from gremlin_python.process.graph_traversal import __
+from gremlin_python.process.traversal import Cardinality, P, Scope,
Column, Order, Direction, T, Pick, Operator
+from radish import given, when, then
+from hamcrest import *
+
+regex_and = re.compile(r"([(.,\s])and\(")
+regex_as = re.compile(r"([(.,\s])as\(")
+regex_from = re.compile(r"([(.,\s])from\(")
+regex_global = re.compile(r"([(.,\s])global")
+regex_in = re.compile(r"([(.,\s])in\(")
+regex_is = re.compile(r"([(.,\s])is\(")
+regex_not = re.compile(r"([(.,\s])not\(")
+regex_or = re.compile(r"([(.,\s])or\(")
+
+
+ignores = [
+ "g.V(v1Id).out().inject(v2).values(\"name\")" # bug in attachment
won't connect v2
+ ]
+
+
+@given("the {graph_name:w} graph")
+def choose_graph(step, graph_name):
+ step.context.g =
Graph().traversal().withRemote(step.context.remote_conn[graph_name])
+
+
+@given("the graph initializer of")
+def initialize_graph(step):
+ traversal = _make_traversal(step.context.g, step.text, {})
+
+ # just be sure that the traversal returns something to prove that it
worked to some degree. probably
+ # is overkill to try to assert the complete success of this init
operation. presumably the test
+ # suite would fail elsewhere if this didn't work which would help
identify a problem.
+ assert len(traversal.toList()) > 0
+
+
+@given("an unsupported test")
+def unsupported_scenario(step):
+ # this is a do nothing step as the test can't be supported for
whatever reason
+ return
+
+
+@given("using the parameter {param_name:w} defined as
{param:QuotedString}")
+def add_parameter(step, param_name, param):
+ if not hasattr(step.context, "traversal_params"):
+ step.context.traversal_params = {}
+
+ step.context.traversal_params[param_name] = _convert(param,
step.context)
+
+
+@given("the traversal of")
+def translate_traversal(step):
+ step.context.ignore = ignores.__contains__(step.text)
+ step.context.traversal = _make_traversal(
+ step.context.g, step.text,
+ step.context.traversal_params if hasattr(step.context,
"traversal_params") else {})
+
+
+@when("iterated to list")
+def iterate_the_traversal(step):
+ step.context.result = map(lambda x: _convert_results(x),
step.context.traversal.toList())
+
+
+@when("iterated next")
+def next_the_traversal(step):
+ step.context.result = map(lambda x: _convert_results(x),
step.context.traversal.next())
+
+
+@then("the result should be {characterized_as:w}")
+def assert_result(step, characterized_as):
+ if step.context.ignore:
+ return
+
+ if characterized_as == "empty": # no results
+ assert_that(len(step.context.result), equal_to(0))
+ elif characterized_as == "ordered": # results asserted in the order
of the data table
+ _table_assertion(step.table, step.context.result, step.context,
True)
+ elif characterized_as == "unordered": # results asserted in any order
+ _table_assertion(step.table, step.context.result, step.context,
False)
+ elif characterized_as == "of": # results may be of any of the
specified items in the data table
+ _any_assertion(step.table, step.context.result, step.context)
+ else:
+ raise ValueError("unknown data characterization of " +
characterized_as)
+
+
+@then("the graph should return {count:d} for count of
{traversal_string:QuotedString}")
+def assert_side_effects(step, count, traversal_string):
+ if step.context.ignore:
+ return
+
+ t = _make_traversal(step.context.g, traversal_string.replace('\\"',
'"'),
+ step.context.traversal_params if
hasattr(step.context, "traversal_params") else {})
+ assert_that(count, equal_to(t.count().next()))
+
+
+@then("the result should have a count of {count:d}")
+def assert_count(step, count):
+ assert_that(len(step.context.result), equal_to(count))
+
+
+@then("nothing should happen because")
+def nothing_happening(step):
+ return
--- End diff --
I think including steps on the feature to denote that can't be migrated is
OK and the format is OK. I was commenting on the way python feature handles it,
but it's not directly related to the test suite.
I agree that its not important for this patch.
> Gremlin Language Test Suite
> ---------------------------
>
> Key: TINKERPOP-1784
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1784
> Project: TinkerPop
> Issue Type: Improvement
> Components: test-suite
> Affects Versions: 3.2.6
> Reporter: stephen mallette
> Assignee: stephen mallette
>
> Provide for a more language agnostic test framework for the Gremlin Language
> so that we can properly test GLVs. The current test suite is completely tied
> to the JVM.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)