cucumber / cucumber-jvm

Cucumber for the JVM
https://cucumber.io
MIT License
2.7k stars 2.02k forks source link

[JUnit Platform] Use EngineDiscoveryRequestResolver #2835

Open mpkorstanje opened 9 months ago

mpkorstanje commented 9 months ago

🤔 What's changed?

⚡️ What's your motivation?

Fully utilize the EngineDiscoveryRequestResolver API to reduce our own complexity (https://github.com/junit-team/junit5/pull/3705, https://github.com/junit-team/junit5/pull/3718)

🏷️ What kind of change is this?

♻️ Anything particular you want feedback on?

📋 Checklist:

codecov[bot] commented 9 months ago

Codecov Report

Attention: Patch coverage is 91.81034% with 19 lines in your changes missing coverage. Please review.

Project coverage is 84.86%. Comparing base (6549826) to head (b6ab3cb). Report is 33 commits behind head on main.

:exclamation: Current head b6ab3cb differs from pull request most recent head 294d880

Please upload reports for the commit 294d880 to get more accurate results.

Files Patch % Lines
...it/platform/engine/CucumberDiscoverySelectors.java 81.25% 9 Missing and 3 partials :warning:
...ucumber/junit/platform/engine/FeatureResolver.java 95.65% 2 Missing and 3 partials :warning:
...junit/platform/engine/PackageFilteringVisitor.java 81.81% 1 Missing and 1 partial :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #2835 +/- ## ============================================ + Coverage 84.80% 84.86% +0.06% + Complexity 2728 2719 -9 ============================================ Files 331 334 +3 Lines 9428 9569 +141 Branches 902 932 +30 ============================================ + Hits 7995 8121 +126 - Misses 1111 1118 +7 - Partials 322 330 +8 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

mpkorstanje commented 7 months ago

The current implementation of the JUnit Platform Engine treats @SelectClasspathResource aimed at directories as if all resources in that directory should be considered. This is not the intended usage, for this @SelectPackages should be used.

Cucumbers documentation consistently uses @SelectClasspathResource.

This will become a problem if/when we start to use the EngineDiscoveryRequestResolver with (#2835, https://github.com/junit-team/junit5/pull/3705, https://github.com/junit-team/junit5/pull/3718) because @SelectClasspathResource will cause an exception to be thrown when used with a non-existing resource.