[ 
https://issues.apache.org/jira/browse/TINKERPOP-3136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stephen Mallette updated TINKERPOP-3136:
----------------------------------------
    Description: 
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.
 ** 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. Test lambdas in GLVs independently.

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.

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
 * Examine "Given an unsupported test" definitions....can any be supported now? 
what do we do with those that cant?

Note the linked JIRAs below as well.

  was:
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
 * Examine "Given an unsupported test" definitions....can any be supported now? 
what do we do with those that cant?

Note the linked JIRAs below as well.


> 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
>            Priority: Major
>
> 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.
>  ** 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. Test lambdas in GLVs independently.
> 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.
> 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
>  * Examine "Given an unsupported test" definitions....can any be supported 
> now? what do we do with those that cant?
> Note the linked JIRAs below as well.



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

Reply via email to