-
Notifications
You must be signed in to change notification settings - Fork 186
Feature/1042 add and
to tags
#1250
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
Conversation
Address flaky expression checker to be reworked.
…ture/1042_add_and_to_tags
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## develop #1250 +/- ##
===========================================
+ Coverage 94.78% 94.89% +0.11%
===========================================
Files 109 111 +2
Lines 5173 5286 +113
Branches 24 24
===========================================
+ Hits 4903 5016 +113
- Misses 262 263 +1
+ Partials 8 7 -1
Flags with carried forward coverage won't be shown. Click here to find out more.
☔ View full report in Codecov by Sentry. |
So seems like there is no hit in perf: First run took+000000000 00:01:26.587663000 Finished in 16.495174 seconds Second run took+000000000 00:01:17.189142000 Finished in 13.658072 seconds third run took+000000000 00:01:20.499584000 old Finished in 16.167675 seconds First run took+000000000 00:03:37.830094000 Finished in 13.127262 seconds Second run took+000000000 00:03:29.262099000 Finished in 10.98218 seconds Third run took+000000000 00:03:01.665203000 |
@jgebal I'm also considering to add keywords none() and any(). What you think? It will take an extra time to implement. |
I can review this PR after Wednesday. What is the idea behind any() and none()? |
Aye, no rush. As for keyword as per junit5 |
Got some small changes to do still. |
…ix ( Reverse Polish Notation). This allows us to more flexibility of using boolean expressions and not limited to flaky regex.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I really like the code you wrote. It's realitvely easy to digest. The except rnp and infix/postfix logic is of course quite complex and hard to grasp without some reading.
I added quite few comments but they are mostly cosmetic/readability and maintainability oriented.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not a complete review yet, but few comments.
I'll need a bit more time to look through it all.
Sounds like a great idea. |
Let's get that in new PR. |
I have added into existing PR as the change was minimal. |
Kudos, SonarCloud Quality Gate passed! |
👏👏👏 |
Fixes #1042
Introduction of expressions for running tests with tags
Tag Expressions
Tag expressions are boolean expressions created by combining tags with the
!
,&
,|
operators. Tag expressions can be grouped using(
and)
braces. Grouping tag expressions affects operator precedence.Two reserved keywords,
any
andnone
, can be used when creating a tag expression to run tests.any
keyword represents tests and suites with any tagsnone
keyword represents tests and suites without tagsThese keywords may be combined with other expressions just like normal tags.
Note: When specifying
none
, be aware that it will exclude any tests/suites/contexts contained within a tagged suite.If you are tagging your tests across multiple dimensions, tag expressions help you to select which tests to execute. When tagging by test type (e.g., micro, integration, end-to-end) and feature (e.g., product, catalog, shipping), the following tag expressions can be useful.
catalog
andshipping
tagsproduct
, except the tests taggedend-to-end
Taking the last expression above
(micro | integration) & (product | shipping)
Excluding tests/suites by tags
It is possible to exclude parts of test suites with tags.
In order to do so, prefix the tag name to exclude with a
!
(exclamation) sign when invoking the test run which is equivalent of-
(dash) in legacy notation.Examples: