I've brought this issue up in the past and had suggested some options I had in mind but now I've finally put the basics of those ideas in place so I figured I'd start a fresh thread. Recall that the issue at hand is that we don't have a test suite for GLVs as gremlin-test is bound to the JVM. We have some tricks that let us test gremlin-python with it but those tricks won't work for every language and we now have the first language in gremlin-dotnet and upcoming gremlin-javascript which won't support it (yes, i know that gremlin-javascript can run on the jvm but there are issues with getting it all to work with the test framework that make it unduly complicated).
On other threads I offered the idea that we look to use Gherkin to write general Gremlin test specifications, which then could be read and processed by the wide variety of test frameworks that can read that format - there tend to be Gherkin processors in just about every language - for example, see: https://cucumber.io/ I just created this issue: https://issues.apache.org/jira/browse/TINKERPOP-1784 and pushed this branch: https://github.com/apache/tinkerpop/tree/TINKERPOP-1784 which demonstrates how this works with gremlin-python. The basic anatomy of this setup involves this new directory in gremlin-test: https://github.com/apache/tinkerpop/tree/TINKERPOP-1784/gremlin-test/features It contains the Gherkin .features files. These are the test specifications. They are written using gremlin-java as the "model" language. GLVs will then need to write some infrastructure to process these Gherkin files. The key to making this "easy" to implement will lie in our abiilty to keep the assertions we want to have relatively simple. The more simplistic the language in the Gherkin .feature files the easier the job it will be for GLVs to build their infrastructure. Of course, once that infrastructure is in place, the GLV developer just has to write the GLV version of the Gremlin specified in the .feature file. So you can look at all the "infrastructure" code here in this pair of files: https://github.com/apache/tinkerpop/tree/TINKERPOP-1784/gremlin-python/src/main/jython/radish and then you can look at the GLV Gremlin translations specifically here: https://github.com/apache/tinkerpop/blob/TINKERPOP-1784/gremlin-python/src/main/jython/radish/count_features_step.py#L34-L46 I think this approach works pretty well and solves our general problems for GLV testing. There is some pain up front in implementing the "infrastructure" but after that new Gremlin tests added to .feature files just need to translated in the GLV. I suppose we could "automate" a good portion of the translation with reflection of some sort. Anything else could just be handled manually. Not sure if we need to use this new model to wholly replace the old one. The process test suite has its place in helping graph database providers test their stuff. I also imagine that introducing this approach in that context would create a breaking change which we would then need to push off to 3.4.0. I suppose that gives us time to think, but for now it might not be best to conflate the two and just treat them as separate aspects of the test suite. Anyway - it's important we settle on an approach to testing as we really shouldn't do a GA release of the Gremlin .NET GLV without getting the test suite solid. please yell if you have any ideas or feedback on this approach.