Skip to content

feat: move separate modules to cucumber.io - #394

Open
Daan Timmer (daantimmer) wants to merge 9 commits into
mainfrom
feature/update-cucumber-moduels
Open

Daan Timmer (daantimmer) wants to merge 9 commits into
mainfrom
feature/update-cucumber-moduels

Conversation

@daantimmer

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI lite review requested due to automatic review settings September 19, 2026 15:21
@github-actions

github-actions Bot commented Sep 19, 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.03s
✅ ACTION zizmor 6 0 0 0 2.15s
✅ CPP clang-format 205 0 0 0 1.21s
✅ DOCKERFILE hadolint 1 0 0 0.03s
⚠️ MARKDOWN markdownlint 8 5 20 0 1.03s
✅ MARKDOWN markdown-table-formatter 8 5 0 0 0.24s
✅ REPOSITORY betterleaks yes no no 1.09s
✅ REPOSITORY git_diff yes no no 0.02s
✅ REPOSITORY grype yes no no 69.65s
✅ REPOSITORY ls-lint yes no no 0.01s
✅ REPOSITORY secretlint yes no no 6.38s
✅ REPOSITORY syft yes no no 2.32s
✅ REPOSITORY trivy yes no no 10.87s
✅ REPOSITORY trivy-sbom yes no no 0.76s
✅ REPOSITORY trufflehog yes no no 4.44s
⚠️ SPELL lychee 71 1 0 9.86s
✅ YAML prettier 13 1 0 0 0.72s
✅ YAML v8r 13 0 0 5.75s
✅ YAML yamllint 13 0 0 0.68s

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.

Copilot review overview

🟡 Changes recommended

Resolve the missing non-fetch dependency discovery and the progress-bar formatter option lookup issue.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 2 High severity

Open (2)
What changed in this PR

Migrates Cucumber Expressions, message handling, and formatter implementations to upstream cucumber.io modules.

Changes:

  • Adds upstream cucumber-expression and pretty-formatter dependencies.
  • Refactors message transformations and broadcasting for value-based messages.
  • Replaces local expression and formatter implementations.
  • Updates APIs, runtime integration, tests, and build configuration.
File Summary
cucumber_cpp/​Steps.hpp Updates expression aliases.
cucumber_cpp/​library/​util/​TransformTestStepResult.cpp Updates result transformation.
cucumber_cpp/​library/​util/​TransformTag.hpp Updates tag transformation declarations.
cucumber_cpp/​library/​util/​TransformTag.cpp Updates tag transformation.
cucumber_cpp/​library/​util/​TransformTable.cpp Updates table transformation.
cucumber_cpp/​library/​util/​TransformStepMatchArgumentsList.cpp Updates argument transformation.
cucumber_cpp/​library/​util/​TransformPickleTag.hpp Updates pickle tag declarations.
cucumber_cpp/​library/​util/​TransformPickleTag.cpp Updates pickle tag transformation.
cucumber_cpp/​library/​util/​TransformHookData.cpp Updates hook data transformation.
cucumber_cpp/​library/​util/​TransformArgument.cpp Updates argument transformation.
cucumber_cpp/​library/​util/​test/​TestTransformTag.cpp Updates tag transformation tests.
cucumber_cpp/​library/​util/​test/​TestTransformTable.cpp Updates table transformation tests.
cucumber_cpp/​library/​util/​test/​TestBroadcaster.cpp Updates broadcaster tests.
cucumber_cpp/​library/​util/​CMakeLists.txt Updates utility build configuration.
cucumber_cpp/​library/​util/​Broadcaster.hpp Updates broadcaster types.
cucumber_cpp/​library/​util/​Broadcaster.cpp Updates broadcaster implementation.
cucumber_cpp/​library/​util/​Body.hpp Updates message body handling.
cucumber_cpp/​library/​util/​ArgumentGroupToMessageGroup.hpp Updates message group declarations.
cucumber_cpp/​library/​util/​ArgumentGroupToMessageGroup.cpp Updates message group conversion.
cucumber_cpp/​library/​test/​TestApplication.cpp Updates application tests.
cucumber_cpp/​library/​support/​SupportCodeLibrary.hpp Migrates support expression types.
cucumber_cpp/​library/​support/​StepRegistry.hpp Updates step registry declarations.
cucumber_cpp/​library/​support/​StepRegistry.cpp Updates step registry implementation.
cucumber_cpp/​library/​support/​DefinitionRegistration.hpp Updates definition registration declarations.
cucumber_cpp/​library/​support/​DefinitionRegistration.cpp Updates definition registration.
cucumber_cpp/​library/​support/​CMakeLists.txt Updates support build configuration.
cucumber_cpp/​library/​runtime/​Worker.cpp Updates runtime worker handling.
cucumber_cpp/​library/​runtime/​TestCaseRunner.cpp Updates test case execution.
cucumber_cpp/​library/​runtime/​NestedTestCaseRunner.cpp Updates nested test execution.
cucumber_cpp/​library/​runtime/​Coordinator.cpp Updates runtime coordination.
cucumber_cpp/​library/​runtime/​CMakeLists.txt Updates runtime build configuration.
cucumber_cpp/​library/​plugin/​PluginRegister.cpp Updates plugin registration.
cucumber_cpp/​library/​plugin/​PLUGIN_ARCHITECTURE.md Updates plugin architecture documentation.
cucumber_cpp/​library/​plugin/​ParameterLoader.hpp Updates parameter loader declarations.
cucumber_cpp/​library/​plugin/​ParameterLoader.cpp Updates parameter loading.
cucumber_cpp/​library/​plugin/​DynamicLibraryManager.cpp Updates dynamic library handling.
cucumber_cpp/​library/​plugin/​CMakeLists.txt Updates plugin build configuration.
cucumber_cpp/​library/​Parameter.hpp Updates parameter definitions.
cucumber_cpp/​library/​formatter/​UsageFormatter.cpp Integrates formatter implementation.
cucumber_cpp/​library/​formatter/​SummaryFormatter.hpp Updates formatter declarations.
cucumber_cpp/​library/​formatter/​PrettyFormatter.hpp Updates pretty formatter declarations.
cucumber_cpp/​library/​formatter/​PrettyFormatter.cpp Integrates pretty formatter behavior.
cucumber_cpp/​library/​formatter/​JunitXmlFormatter.cpp Updates JUnit formatter integration.
cucumber_cpp/​library/​formatter/​helper/​TextBuilder.hpp Updates text builder declarations.
cucumber_cpp/​library/​formatter/​helper/​TextBuilder.cpp Updates text building.
cucumber_cpp/​library/​formatter/​helper/​PrintMessages.hpp Updates message printing declarations.
cucumber_cpp/​library/​formatter/​helper/​PrintMessages.cpp Updates message printing.
cucumber_cpp/​library/​formatter/​helper/​IndentString.hpp Updates indentation declarations.
cucumber_cpp/​library/​formatter/​helper/​IndentString.cpp Updates indentation handling.
cucumber_cpp/​library/​formatter/​helper/​FormatMessages.hpp Updates message formatting declarations.
cucumber_cpp/​library/​formatter/​helper/​CMakeLists.txt Updates formatter helper build configuration.
cucumber_cpp/​library/​formatter/​ExternalFormatter.hpp Adds external formatter declarations.
cucumber_cpp/​library/​formatter/​ExternalFormatter.cpp Integrates external formatter behavior.
cucumber_cpp/​library/​formatter/​CMakeLists.txt Updates formatter dependencies and targets.
cucumber_cpp/​library/​engine/​test/​TestStep.cpp Updates engine tests.
cucumber_cpp/​library/​engine/​ExecutionContext.cpp Updates execution context handling.
cucumber_cpp/​library/​engine/​CMakeLists.txt Updates engine build configuration.
cucumber_cpp/​library/​cucumber_expression/​TreeRegexp.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​TreeRegexp.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​test/​TestTreeRegexp.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​TestTransformation.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​TestRegularExpression.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​TestRegexStrategyFactory.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​TestRegexStrategy.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​TestExpressionTokenizer.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​TestExpressionParser.cpp Removes local expression tests.
cucumber_cpp/​library/​cucumber_expression/​test/​CMakeLists.txt Updates expression test configuration.
cucumber_cpp/​library/​cucumber_expression/​StdRegexStrategy.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​StdRegexStrategy.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​RegularExpression.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​RegularExpression.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​RegexStrategyFactory.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​RegexStrategyFactory.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​RegexStrategy.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Re2RegexStrategy.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Re2RegexStrategy.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​ParameterRegistry.hpp Migrates parameter registry types.
cucumber_cpp/​library/​cucumber_expression/​ParameterRegistry.cpp Migrates parameter registry implementation.
cucumber_cpp/​library/​cucumber_expression/​MatchRange.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​MatchRange.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Matcher.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Group.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Group.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​ExpressionTokenizer.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​ExpressionTokenizer.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​ExpressionParser.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​ExpressionParser.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Expression.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Expression.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Errors.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Errors.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​CMakeLists.txt Removes local expression build targets.
cucumber_cpp/​library/​cucumber_expression/​Ast.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Ast.cpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Argument.hpp Replaced local expression implementation.
cucumber_cpp/​library/​cucumber_expression/​Argument.cpp Replaced local expression implementation.
cucumber_cpp/​library/​CMakeLists.txt Updates library build configuration.
cucumber_cpp/​library/​BodyMacro.hpp Updates argument conversion APIs.
cucumber_cpp/​library/​assemble/​CMakeLists.txt Updates assembly build configuration.
cucumber_cpp/​library/​assemble/​AssembleTestSuites.hpp Updates suite assembly declarations.
cucumber_cpp/​library/​assemble/​AssembleTestSuites.cpp Updates suite assembly.
cucumber_cpp/​library/​Application.hpp Updates application declarations.
cucumber_cpp/​library/​Application.cpp Updates application integration.
cucumber_cpp/​library/​api/​RunCucumber.hpp Updates run API declarations.
cucumber_cpp/​library/​api/​RunCucumber.cpp Updates run API.
cucumber_cpp/​library/​api/​Gherkin.hpp Updates Gherkin API declarations.
cucumber_cpp/​library/​api/​Gherkin.cpp Updates Gherkin API.
cucumber_cpp/​library/​api/​Formatters.hpp Updates formatter API declarations.
cucumber_cpp/​library/​api/​Formatters.cpp Updates formatter registration and options.
cucumber_cpp/​library/​api/​CMakeLists.txt Updates API build configuration.
cucumber_cpp/​CucumberCpp.hpp Updates public exports and aliases.
cucumber_cpp/​acceptance_test/​test.bats Updates acceptance expectations.
cucumber_cpp/​acceptance_test/​hooks/​Hooks.cpp Updates acceptance hooks.
cmake/​dependencies.cpm.cmake Adds upstream dependencies and package setup.
.clang-tidy Adjusts initializer linting.

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

Comment on lines +232 to +235
find_package(cucumber_messages ${CUCUMBER_MESSAGES_VERSION} REQUIRED)
find_package(cucumber_gherkin ${CUCUMBER_GHERKIN_VERSION} REQUIRED)
find_package(cucumber_query ${CUCUMBER_QUERY_VERSION} REQUIRED)
find_package(cucumber_tag_expressions ${CUCUMBER_TAG_EXPRESSIONS_VERSION} REQUIRED)
target_link_libraries(cucumber_cpp.library.formatter PUBLIC
cucumber_cpp.library.cucumber_expression
cucumber_cpp.library.formatter.helper
cucumber::pretty_formatter
@github-actions

github-actions Bot commented Sep 19, 2026

Copy link
Copy Markdown

Test Results

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

Results for commit 3140d6b. ± Comparison against base commit 297a72d.

♻️ This comment has been updated with latest results.

Copilot AI review requested due to automatic review settings September 19, 2026 16:41

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.

Copilot review overview

🔵 Needs a closer look

Non-fetch builds do not discover the newly required imported dependencies, causing CMake configuration or linking to fail.

Review effort: Lite
Findings: 2 High severity

Open (2)

Copilot AI review requested due to automatic review settings September 19, 2026 16:51

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.

Copilot review overview

🔵 Needs a closer look

Resolve missing installed-package dependencies and correct the progressbar formatter option key.

Review effort: Lite
Findings: 2 High severity

Open (2)
Previously missed (1)

In code that hasn't changed since last review

Medium severity Use matching configuration key for progressbar formatter

cucumber_cpp/​library/​api/​Formatters.cpp:57

The formatter is registered under the public name progressbar, but its options are extracted from the unrelated key progress-bar. As a result, users passing {"progressbar": {...}} cannot configure this formatter; those options are silently ignored. Use the same key as the registered formatter (or consistently rename the registration).

Copilot AI review requested due to automatic review settings September 19, 2026 19:51

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.

Copilot review overview

🔵 Needs a closer look

Non-fetch builds lack dependency discovery, and the formatter registration change breaks existing consumers.

Review effort: Lite
Findings: 2 High severity

Open (2)

Copilot AI review requested due to automatic review settings September 19, 2026 20:27

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.

Copilot review overview

🔵 Needs a closer look

Dependency discovery is incomplete for non-fetch builds, and the progressbar formatter option key is inconsistent.

Review effort: Lite
Findings: 2 High severity

Open (2)
Previously missed (1)

In code that hasn't changed since last review

Medium severity Formatter options use mismatched progress-bar key

cucumber_cpp/​library/​api/​Formatters.cpp:56

The formatter is registered under progressbar, but its options are read from the progress-bar key. As a result, configuration such as --format-options '{"progressbar": {"include_attachments": false}}' is silently ignored, unlike the other formatter registrations whose option key matches their name. Use the registered name consistently (or explicitly document and support the alternate key).

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
3.3% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

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.

2 participants