Skip to content

test(compat): run the V4 plugin compatibility scenarios - #41

Draft
YOU54F wants to merge 2 commits into
feat/compat-suite-reqnrollfrom
feat/compat-suite-plugins
Draft

YOU54F wants to merge 2 commits into
feat/compat-suite-reqnrollfrom
feat/compat-suite-plugins

Conversation

@YOU54F

@YOU54F YOU54F commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

Runs the V4 plugin features in the Reqnroll compatibility runner against the current PactNet interface (pass 1 of 5). Stacked on #40.

Files: Steps/PluginSteps.cs, Support/PluginFfi.cs, Support/PluginProviders.cs, Support/PluginWorld.cs, Hooks/PluginHooks.cs.

Depends on the suite branch feat/plugin-features (YOU54F/pact-compatibility-suite#1). The plugin features are included only when PACT_COMPAT_SUITE points at a checkout that has features/V4/plugins. Needs plugins matt 0.1.1, csv 0.0.6, avro 0.1.3 and protobuf 0.8.0 installed.

PACT_COMPAT_SUITE=/path/to/pact-compatibility-suite dotnet test tests/PactNet.Compatibility.Tests

Results

  • 48/48 pass on pact_ffi 0.4.27. All of them go through the FFI, because PactNet master has no plugin API.
  • V1 consumer is still 24 pass. No src/ changes.

Limitations

Plugins. Core PactNet has no plugin API on master, so none of the 48 scenarios exercise the DSL. The follow-up stacked PR (compat/plugins-integration) merges the plugin PRs and moves 17 scenarios onto the DSL.

Core suite (from #40): 166 skipped. V1 consumer only. The provider side and V2+ are blocked by PactNet DSL gaps:

  • no binary body
  • no V1 spec
  • no mock-server mismatches
  • the interaction handle isn't exposed
  • VerifyAsync only works inside a callback
  • no matching-rule tables

CI

.github/workflows/compat-plugins.yml checks out YOU54F/pact-compatibility-suite@feat/plugin-features (overridable with workflow_dispatch inputs suite-repository/suite-ref), installs matt 0.1.1, csv 0.0.6, avro 0.1.3 and protobuf 0.8.0, and runs the 48 plugin scenarios with PACT_COMPAT_SUITE set. It has no PR base filter, so it runs on this PR stacked on #40 (ci.yml only runs for PRs into master).

It also fixes the runner to read mismatches from errors in the verifier JSON (FFI 0.4.27); before that, 10 "reports the plugin's mismatch" scenarios failed.

🤖 Generated with Claude Code

Link features/V4/plugins from PACT_COMPAT_SUITE (skipped when unset or
absent) and implement the plugin_http, plugin_message,
plugin_sync_message, plugin_transport and plugin_lifecycle steps.

PactNet has no public plugin API on this branch, so every scenario goes
through direct pact_ffi calls (using_plugin, interaction_contents,
create_mock_server_for_transport, verifier). Each scenario's route
(DSL / FFI / fail) is written to plugin-routes.txt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds compat-plugins.yml, which checks out the suite branch with
features/V4/plugins, installs the four plugins and runs the V4.Plugins
tests. It runs on PRs to any base, so stacked PRs are covered.

Also reads verification mismatches from "errors" in the verifier JSON,
which is where FFI 0.4.27 reports them; 10 scenarios failed without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant