-
-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python: Make tests pass against shared test data #18
Comments
Pull #95 contains an implementation to use the test data for Python.
HINTS:
|
* FIXED #94 Not.to_string() conversion leads to double-parenthesis IMPLEMENTED FIX FOR: * [x] java * [x] javascript * [x] python * FIX CI-BUILD: Missing dependency PyYAML * Python 2.7 related issues (pytest, pathlib related) * FIX: tox to test Python 2.7 usecase locally UPDATE: Dependencies * setup.py * py.requirements/*.txt -- testing and development related * FIX CI BUILD: prettier formatting issue * FIXES #94 for Go programming language * notExpr.ToString() * ADDED: Evaluatable.isBinaryOperator() (used by: notExpr) REASON: Was faster than providing an instance-of implementation * FIXES #94 for Ruby programming language * Not.to_s() -- to_string conversion * FIXES #94 for Perl programming language * go: Provide IsBinaryOperator function * Remove IsBinaryOperator() method in Evaluatable interface * Provide IsBinaryOperator() function instead that encapsulates the is-instance-of And/Or expression. * perl: Use isa operator instead of isBinaryOperator method * Remove Node::isBinaryOperator() method and implementations * go: Use "isBinaryOperator" (naming style change) * Use "isBinaryOperator()" (was: "IsBinaryOperator") to comply w/ Go naming conventions and avoid to expose the this helper function to the public API of this package. * UPDATED: CHANGELOG for pull #95 * Fixes: #94 * Implements: #18 * CI workflow: test-python -- Remove Python 2.7 * REASON: Github Actions support for Python 2.7 was removed (in 2023-06) * Try to use pypy-2.7 instead (until Python 2.7 support is dropped) * CI workflow: test-python -- Remove Python 2.7 * REASON: Github Actions support for Python 2.7 was removed (in 2023-06) * Try to use pypy-2.7 instead (until Python 2.7 support is dropped)
@jenisys - Not sure if you're still around / maintaining and checking python. But 2/3 of the shared tests are now ran. Just the errors ones aren't running. This feels like this issue is close to being "close off-able" cc/ @brasmusson |
@luke-hill, interested in your thoughts based on diff below. The Python error messages have higher granularity; so we may want to consolidate a similar approach into the other parsers; and/or limit the expected message to a suitable substring and check matches across implementations. Some error messages improvements in recent Python releases which may be of relevance regards enhancements. Python error messages diff
|
This should come from a consensus at one of the contributor meetings. Ideally the shared ones should conform. I think the issue here is development came before testing, which ideally shouldn't happen. But such is the way with real life. P.S. Looking at some of the above. I think there are some errors in the messages.
|
Cheers @luke-hill! 🙌 I might take a look at correcting the error messages as you've mentioned if I get chance - was interested to look at enhancing and maybe taking a similar format to the latest Python error messages style - good to have direction |
I'm definitely in favor of friendlier messages! Cucumber expressions currently uses the format below. Which contains the same elements as the Python error messages but with a slightly different formatting. expression: three (brown)/black mice
text: three brown mice
exception: |-
This Cucumber Expression has a problem at column 7:
three (brown)/black mice
^-----^
An alternative may not exclusively contain optionals.
If you did not mean to use an optional you can use '\(' to escape the '(' But it seems prudent to me to make sure the existing tests work before we start making improvements. @kieran-ryan I don't quite understand your diff. I don't see any code in the current Python implementation that would produce the error messages you are showing. Is this a proposal for improvement or how it currently works? If the latter, could you point out to me where in the code this is done? |
@mpkorstanje, above diff would be how it currently works rather than a proposal. I've enabled the error message tests to run against the Python implementation - to show same, though the pytest output is not most the most user-friendly to read; may find useful in any case. The code handling the error message is as below. Based on internal usage within the library, you can ignore the first conditional ( tag-expressions/python/cucumber_tag_expressions/parser.py Lines 324 to 333 in 0ddbd2f
|
@mpkorstanje, @luke-hill I aligned the Python error messages on the attached pull request; with tests passing. Pull request 'changes' will give a good idea of the difference - though bear in mind that most tests are checking for a substring, so although appears information has been dropped in some cases, other parts of the error message should majorly retain that information - such as the |
I'm definitely "more" pro than con. So from me it's a 👍 but I would prefer that we "didn't" do this for python originally and proposed it for all flavours. But I think that because python is a bit like Reqnroll where it's got a lot of custom components from pytest-bdd e.t.c. and it's not fully using a cucumber official implementation, we're likely to hit a few of these. I think the tag expressions library got a lot of it's juice early in the inception stage/s, so giving them a facelift and an update I see only as a positive. TL;DR - I like the updates, but would prefer any changes are fully unanimous across all flavours of tag-expressions |
In #9 we introduced shared test data. The Python implementation should be updated to:
testdata/*.yml
The text was updated successfully, but these errors were encountered: