Stephen Mallette created TINKERPOP-3136:
-------------------------------------------

             Summary: Complete move to Gherkin for implementation testing
                 Key: TINKERPOP-3136
                 URL: https://issues.apache.org/jira/browse/TINKERPOP-3136
             Project: TinkerPop
          Issue Type: Improvement
          Components: test-suite
    Affects Versions: 3.7.3
            Reporter: Stephen Mallette


TinkerPop is most of the way to testing Gremlin exclusively with Gherkin. By 
4.0 that move should be complete with whatever deprecations necessary for Java 
tests along 3.x. Retain the Java test suite for embedded {{Graph}} tests that 
only make sense in that case.

For 3.x - likely 3.8.x
 * 
 ** Create {{ProcessEmbeddedSuite}} and deprecate {{ProcessLimitedSuite}} to 
make it clear what aspects of Gremlin are meant for embedded cases and 
Java/Groovy sugar only. Update provider documentation to reflect these changes 
and ensure Gherkin is clear as the primary test suite for Gremlin.
 ** Drop {{MergeVertexTest}} and {{MergeEdgeTest}} as remaining tests in there 
seem to be covered by Gherkin already.
 ** Drop {{SubgraphTest}} since it should be able to be converted to feature 
tests but will need to add a way to assert a {{Graph}} though. Ignore in 
languages that don't have {{{}Graph{}}}.
 ** Drop {{TreeTest}} since it should be able to be converted to feature tests 
but will need to add a way to assert a {{Tree}} though. Ignore in languages 
that don't have {{{}Tree{}}}.
 ** Implement Gherkin tests for {{match()}} - do a limited and simple set to 
minimally test the capability since that feature is a bit up in the air for 
4.x. Retain {{MatchTest}} as it is for the embedded suite for now.
 ** For {{{}ComplexTest{}}}:
 *** {{cap('m')}} from {{classicRecommendation}} so that it can be asserted in 
{{{}Recommendation.feature{}}}.
 *** Figure out a way to assert the {{coworkerSummary}} tests in Gherkin. We 
don't currently have a way to assert very complex {{{}Map{}}}. The basic test 
could be run multiple times to try to break up the results to fit with the 
assertion capabilities?
 *** Move {{playlistPths}} to {{Paths.feature}}
 *** Remove {{ComplexTest}} as all relevant tests will have been moved to 
Gherkin.
 ** Remove {{PartitionStrategyProcessTest}} - seems to be covered in Gherkin at 
this point.
 ** Convert {{TernaryBooleanLogicsTest}} to Gherkin - add it to the 
{{/semantics}} directory.

For 4.x
 * 
 ** Remove {{ProcessLimitedSuite}} in favor of {{ProcessEmbeddedSuite}}
 ** Since {{Tree}} and {{Graph}} will be present in 4.x for all languages, 
ensure that test suites are updated in support of those assertions as these 
tests will have been skipped prior.
 ** Remove all lambda based tests from Gherkin since they are not supported by 
gremlin-language. Ensure that they all exist in the embedded tests. Perhaps put 
them all in a {{LambdaStepTest}} and combine in other embedded tests there so 
that they are all in once place. Remove all infrastructure for processing 
lambdas in the Gherkin suite.

h3. Open questions

 * Make a decision about {{profile()}} and {{explain()}} in terms of how they 
are tested. Leaning toward them remaining an embedded case as they have 
implementation specific output potentially



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to