Releases: pactflow/pact-protobuf-plugin
0.8.0
Feature Release
⚠ protoc is no longer required. The plugin now bundles its own Protocol Buffer compiler — no installation, no download, no path configuration needed.
What's changed
arrayContains matcher support for repeated fields
Consumers can now use the arrayContains matcher on repeated protobuf fields to assert that an array contains at least one element matching a given expression, without requiring the entire array to match exactly.
Embedded proto compiler
The plugin previously downloaded or located an external protoc binary at startup, which could fail in air-gapped environments, on unsupported architectures, or when the system protoc was the wrong version. The compiler is now provided by the protox (https://crates.io/crates/protox) crate and compiled directly into the plugin binary. Proto files are compiled in-process with no external dependencies.
As a result:
- protocVersion and downloadUrl have been removed from the plugin manifest — these fields are ignored if present in older manifests.
- The additionalIncludes configuration option continues to work as before for resolving imported proto files from other directories.
Dependency upgrades
- prost / prost-types → 0.14
- tonic → 0.14
- pact-plugin-driver → 0.7.6
Removed runtime dependencies
reqwest, zip, tempfile, and os_info are no longer bundled in the plugin binary, reducing its size and attack surface.
Changelog:
0.7.0
Fix nested message lookups + proto descriptor caching
- 18e6500 - chore: Cleanup some compiler warnings
- 67533d1 - chore: Bump minor version
- 73051a0 - chore: Update dependencies
- e82e656 - feat: Fix nested message lookups; introduce proto descriptor caching; refactor (#235) (Stanislav Vodetskyi)
- 658e7af - fix: Upgrading pact_matching to 2.0.1 broke some imports
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
Bugfix Release
Fixes an issue with the mock server where there are multiple interactions for the same route.
0.6.0
Fix for always requiring repeated enum field values
- 3bb48cf - chore: DRY up some of the error responses
- 2c93c0f - fix: Use the stored consumer expectations to determine if a repeated field is missing #197
- 8de0573 - fix: Store the expectations from the consumer test in the Pact file #197
- 8c05cbc - chore: Update all dependencies and upgrade Tonic to 0.13.1
- 6cca3f4 - chore: Upgrade minor dependencies + pact dependencies to latest
- 18632b0 - chore: Update project to Rust 2024 edition
- d90888c - Update README.md (ZahraKhanRed)
0.5.4
0.5.3
Support for injecting an array of values into a repeated field
- ffa56f2 - chore: Upgrade pact_models to 1.2.5
- 3d60553 - refactor: Update DynamicMessage to consolidate fields into a single value by field number #73
- e2e08c9 - refactor: Update value injection to push additional values into the additional_data attribute #73
- 2abbed2 - refactor: Write out the additional field values when serialising a field #73 +1100)
- 47aa5c7 - refactor: Add an attribute to ProtobufField to capture additional values from repeated fields #73
- c51337d - feat: Add some tests around injecting an array of values into a repeated field #73
- 25ba86a - feat: Support injecting an array of values into a repeated field #73
- 1f05ab5 - refactor: Update ProtobufField to also contain the field descriptor for the field #73
- e5b9de6 - refactor: Update DynamicMessage fetch_field_value and set_field_value to return a result #73
- cfb54b4 - refactor: Update DynamicMessage to store the Protobuf fields as map keyed by field number #73
- 8452e25 - refactor: Pass protobuf message descriptor to DynamicMessage::new #73
- a7b1218 - chore: Update dependencies