Overview
Pact implementation written in Rust.
This project provides a Pact implementation written in Rust. It supports the V3 Pact specification and V4 Pact specification and provides shared libraries that can be used in other languages via foreign function interfaces (FFI).
Note: The mock server crates have moved to https://github.com/pact-foundation/pact-core-mock-server.
Installing / Getting started​
Rust Projects​
The project crates are published to crates.io, and you can use them directly.
Consumer Projects​
For a Rust consumer, refer to the pact_consumer crate.
You can find examples where the integration to the Pact Broker is tested using
Pact tests written with the pact_consumer
crate.
Verifying Providers​
To verify a provider, you can use the verifier CLI tool. See Pact Verifier CLI.
FFI Interface​
Other languages can use the core features through FFI shared libraries. These libraries expose functions that follow a C calling convention.
Consumer Projects​
For example for a project using Conan and CMake that links to the pact-ffi
crate, see Pact-C++.
Verifying Providers​
TODO after merging FFI libs
Developing​
There are 8 main crates to this implementation:
pact_models​
This is a library that provides the Pact models and functions for reading and writing pact files.
pact_matching​
This is a library that provides the Pact functions for matching requests and responses.
pact_ffi​
This is a library that implements exported functions using C bindings for use in foreign languages.
pact_mock_server​
Moved to https://github.com/pact-foundation/pact-core-mock-server.
pact_mock_server_cli​
Moved to https://github.com/pact-foundation/pact-core-mock-server.
pact_consumer​
This is a library that provides the Pact consumer test support and DSL for use in Rust projects.
pact_verifier​
This library provides support for verifying a provider against pact files.
pact_verifier_cli​
Command line excutable that uses the pact_verifier to be able to verify a running provider against pact files.
Building​
To build the libraries in this project, you need a working Rust environment. Refer to the Rust Guide. Requires Rust 1.71.0 or later.
The build tool used is cargo
.
cd rust
cargo build
This will compile all the libraries and put the generated files in rust/target/debug
.
Releasing​
The released libraries for each module are built by a GH action that attaches the libraries to the GH release for each
crate. To release a crate, run the release.groovy
script in the crate directory. This will guide you through the
release process for the crate. Then create a GH release using the tag and changelog created by the script.
Contributing​
See CONTRIBUTING (PRs are always welcome!).
Documentation​
Rust crate documentation is published to the Rust documentation site.
Additional documentation can be found at the main Pact website.
Contact​
or
- Twitter: @pact_up
- Stack Overflow: stackoverflow.com/questions/tagged/pact
Licensing​
The code in this project is licensed under a MIT license. See LICENSE.