Skip to content

feat: use cucumber/tag-expressions - #385

Merged
Daan Timmer (daantimmer) merged 4 commits into
mainfrom
feature/use-tag-expression-from-cucumber
Aug 24, 2026
Merged

feat: use cucumber/tag-expressions#385
Daan Timmer (daantimmer) merged 4 commits into
mainfrom
feature/use-tag-expression-from-cucumber

Conversation

@daantimmer

Copy link
Copy Markdown
Collaborator

cucumber_cpp/library/tag_expression has been moved to github.com/cucumber/tag-expressions

Copilot AI lite review requested due to automatic review settings August 23, 2026 21:12
@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Max errors Warnings Elapsed time
✅ ACTION actionlint 6 0 0 0.06s
✅ ACTION zizmor 6 0 0 0 3.94s
✅ CPP clang-format 253 1 0 0 1.62s
✅ DOCKERFILE hadolint 1 0 0 0.03s
⚠️ MARKDOWN markdownlint 8 5 20 0 1.32s
✅ MARKDOWN markdown-table-formatter 8 5 0 0 0.29s
✅ REPOSITORY betterleaks yes no no 1.11s
✅ REPOSITORY git_diff yes no no 0.03s
✅ REPOSITORY grype yes no no 62.87s
✅ REPOSITORY ls-lint yes no no 0.01s
✅ REPOSITORY secretlint yes no no 6.33s
✅ REPOSITORY syft yes no no 2.33s
✅ REPOSITORY trivy yes no no 11.47s
✅ REPOSITORY trivy-sbom yes no no 0.75s
✅ REPOSITORY trufflehog yes no no 3.77s
⚠️ SPELL lychee 73 1 0 11.72s
✅ YAML prettier 13 1 0 0 0.69s
✅ YAML v8r 13 0 0 5.33s
✅ YAML yamllint 13 0 0 0.77s

Detailed Issues

⚠️ SPELL / lychee - 1 error
📝 Summary
---------------------
🔍 Total..........168
🔗 Unique.........162
✅ Successful.....167
⏳ Timeouts.........0
🔀 Redirected......74
👻 Excluded.........0
❓ Unknown..........0
🚫 Errors...........1
⛔ Unsupported......1

Errors in CONTRIBUTING.md
[404] https://github.com/yourname/amp-cucumber-cpp-runner.git (at 41:35) | Rejected status code: 404 Not Found | Followed 1 redirect. Redirects: https://github.com/yourname/amp-cucumber-cpp-runner.git --[301]--> https://github.com/yourname/amp-cucumber-cpp-runner

Hint: Followed 74 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.
Hint: You can configure accepted/rejected response codes with `-a` or `--accept`
⚠️ MARKDOWN / markdownlint - 20 errors
CHANGELOG.md:31 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:38 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:44 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:51 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:58 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:66 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:70 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:79 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:85 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:93 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:97 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:102 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:111 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:122 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:130 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:134 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:159 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:166 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
cmake/WindowsToolchainFilesProvidedBy.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "<https://github.com/MarkSchofi..."]
README.md:132 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]

Notices

⚠️ Your configuration references items that have been removed from MegaLinter and are ignored: REPOSITORY_GITLEAKS, REPOSITORY_GOODCHECK, REPOSITORY_KICS. See Removed linters to find their replacements.

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@10.0.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,ACTION_ZIZMOR,CPP_CLANG_FORMAT,DOCKERFILE_HADOLINT,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_GIT_DIFF,REPOSITORY_BETTERLEAKS,REPOSITORY_GRYPE,REPOSITORY_LS_LINT,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the runner from the in-repo cucumber_cpp::library::tag_expression implementation to the upstream C++ tag expressions library from github.com/cucumber/tag-expressions, updating both code and build wiring accordingly.

Changes:

  • Removes the in-repo tag expression implementation (parser/model/token/error) and its associated unit tests/CMake targets.
  • Updates runtime call sites to use cucumber::tag_expressions::{Model,Parse} and links against cucumber::tag_expressions.
  • Adds cucumber/tag-expressions as a CPM dependency.

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
cucumber_cpp/library/tag_expression/Token.hpp Removes in-repo token definitions (now provided by external library).
cucumber_cpp/library/tag_expression/Token.cpp Removes in-repo token behavior implementation.
cucumber_cpp/library/tag_expression/Parser.hpp Removes in-repo parser public API declaration.
cucumber_cpp/library/tag_expression/Parser.cpp Removes in-repo parser implementation.
cucumber_cpp/library/tag_expression/Model.hpp Removes in-repo expression model public API.
cucumber_cpp/library/tag_expression/Model.cpp Removes in-repo expression model implementation.
cucumber_cpp/library/tag_expression/Error.hpp Removes in-repo error type.
cucumber_cpp/library/tag_expression/Error.cpp Removes in-repo error implementation unit.
cucumber_cpp/library/tag_expression/CMakeLists.txt Removes CMake target for the in-repo tag expression library.
cucumber_cpp/library/tag_expression/test/TestToken.cpp Removes unit tests for token precedence.
cucumber_cpp/library/tag_expression/test/TestParsing.cpp Removes YAML-driven parsing tests for the in-repo parser.
cucumber_cpp/library/tag_expression/test/TestEvaluations.cpp Removes YAML-driven evaluation tests for the in-repo evaluator.
cucumber_cpp/library/tag_expression/test/TestErrors.cpp Removes parser error expectation tests.
cucumber_cpp/library/tag_expression/test/CMakeLists.txt Removes test target wiring for the deleted tag_expression tests.
cucumber_cpp/library/support/Types.hpp Switches stored tag-expression types to cucumber::tag_expressions::Expression.
cucumber_cpp/library/support/HookRegistry.hpp Updates hook tag-expression ownership type to upstream library model.
cucumber_cpp/library/support/HookRegistry.cpp Switches hook expression parsing to cucumber::tag_expressions::Parse.
cucumber_cpp/library/support/CMakeLists.txt Links support library against cucumber::tag_expressions instead of the removed local target.
cucumber_cpp/library/CMakeLists.txt Links the main library against cucumber::tag_expressions and disables the local tag_expression subdir.
cucumber_cpp/library/Application.cpp Switches CLI tag parsing to cucumber::tag_expressions::Parse.
cmake/dependencies.cpm.cmake Adds CPM fetch for cucumber/tag-expressions and defines its pin metadata.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread cmake/dependencies.cpm.cmake
Comment thread cmake/dependencies.cpm.cmake Outdated
Copilot AI review requested due to automatic review settings August 23, 2026 21:16
@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

Test Results

34 tests  ±0   34 ✅ ±0   21s ⏱️ +2s
 1 suites ±0    0 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit 3c41458. ± Comparison against base commit 71acefc.

♻️ This comment has been updated with latest results.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated no new comments.

Suppressed comments (2)

Previously missed (1) — in code that hasn't changed since the last review.

cucumber_cpp/library/Application.cpp:250

  • --tags/--retry-tag-filter parsing now depends on cucumber::tag_expressions::Parse, but the current cucumber_cpp/library/test/TestApplication.cpp suite doesn’t exercise tag filtering. Adding an integration test with a tagged .feature would help catch behavior differences/regressions from the library swap.
                .tagExpression = cucumber::tag_expressions::Parse(fmt::to_string(fmt::join(options.tags, " "))),

cmake/dependencies.cpm.cmake:18

  • Renovate metadata for this dependency points to the wrong upstream repo (currently packageName=cucumber/gherkin). This will prevent automated updates (or update the wrong dependency).
# renovate: datasource=github-tags packageName=cucumber/gherkin versioning=semver

@MiquelJayson-Philips MiquelJayson-Philips left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copilot AI review requested due to automatic review settings August 24, 2026 09:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated 1 comment.

Comment thread cucumber_cpp/library/CMakeLists.txt
Copilot AI review requested due to automatic review settings August 24, 2026 09:31
@daantimmer
Daan Timmer (daantimmer) enabled auto-merge (squash) August 24, 2026 09:34
@sonarqubecloud

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated no new comments.

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

cmake/dependencies.cpm.cmake:19

  • CUCUMBER_TAG_EXPRESSIONS is pinned to TAG v1.0.0, but that upstream tag doesn’t include the C++ cpp/ subtree (the repo only had README/java/javascript/ruby at that tag). Since this project fetches SOURCE_SUBDIR cpp, keeping TAG at v1.0.0 makes the version metadata misleading and is likely to break if the digest pin is ever removed/updated by Renovate. Pin to a tag that actually contains the C++ implementation (e.g. v11.0.1) and use the matching digest for that tag.
# renovate: datasource=github-tags packageName=cucumber/tag-expressions versioning=semver
ccr_dependency(CUCUMBER_TAG_EXPRESSIONS v1.0.0     2d2e9ac1d84a2e05154fa982a276a04e3d1b3650)

@daantimmer
Daan Timmer (daantimmer) merged commit c4c1bd5 into main Aug 24, 2026
25 checks passed
@daantimmer
Daan Timmer (daantimmer) deleted the feature/use-tag-expression-from-cucumber branch August 24, 2026 09:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants