Skip to content

Releases: pactflow/pact-protobuf-plugin

0.8.0

13 May 01:29

Choose a tag to compare

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:

  • 173bf2f - feat: replace protoc binary with embedded protox compiler (#237)
  • c9da8c1 - chore: Use macos latest in CI
  • 2f5d3c6 - chore: Update dependencies
  • 4b7277a - feat: add arrayContains support for repeated fields (#236) (Stanislav Vodetskyi)

0.7.0

06 Oct 01:40

Choose a tag to compare

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

19 Aug 23:41

Choose a tag to compare

Maintenance Release

  • f0c3abb - fix: finding deeply nested enums (#232) (Eric Muller)

0.6.4

29 Jul 01:12

Choose a tag to compare

Bugfix Release

  • 6d85ac2 - fix: Consumer expectations were not passed down for repeated message fields #231

0.6.3

27 Jul 23:30

Choose a tag to compare

Bugfix Release

  • 940ee6b - fix: Only need to check the start of the content type string #32
  • b76316b - feat: Update readme with a note about byte arrays with non-utf8 data #229
  • 6f3b414 - feat: Support byte arrays with non-utf8 data #229

0.6.2

17 Jul 04:47

Choose a tag to compare

Maintenance Release

  • 3b2a473 - chore: Small optimisation, delay locking the state mutex as late as possible
  • a9bdb80 - test: Test atLeast and atMost first in expression (#226) (Tien Vo Xuan)
  • 8102970 - feat: Support fromProviderState generator in regex matching expression (#225) (Tien Vo Xuan)

0.6.1

08 Jul 06:08

Choose a tag to compare

Bugfix Release

Fixes an issue with the mock server where there are multiple interactions for the same route.

  • 54060e8 - chore: Update other builds to latest Rust stable
  • 0fe97db - chore: Update musl build to Rust 1.88
  • f348a47 - fix(mock-server): Need to handle the case where there are multiple messages per route #228

0.6.0

25 Jun 00:27

Choose a tag to compare

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

17 Nov 23:51

Choose a tag to compare

Bugfix Release

  • d6b1626 - fix: Fixed regression introduced by 0.5.3 release

0.5.3

14 Nov 23:40

Choose a tag to compare

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