Summary
This issue tracks the major changes required to get Pact Go to a full v3.0.0 specification support, including integration with the native pact-reference library.
Moving to the native library will solve a number of pre-existing issues, as well as bring a number of positive new changes to the environment:
- Windows support: There a number of well documented Windows related issues, the primary being the file path restriction (see numerous issues in pact js/pact node relating to tis)
- Speed: the version of Traveling Ruby we use is pinned to 2.2 - quite old. This seems to run quite slowly even on modern hardware. Additionally, because we bundle an entire Ruby runtime certain OSs (particularly corporate machines) see Ruby as a threat, and will pre-emptively scan causing builds to slow down. Rust is fast.
- Security: following from (2), there are some known vulnerabilities in some of the Gems present in the runtime. Whilst we have vetted these issues, it can throw up a red flag which may preclude the use of Pact altogether even if they are false positives.
- Support for modern Pact features in the v3 and v4 specification, things like XML matching, binary payloads and more.
- Mac security: recently, Mac has introduced a sandbox for unsigned binaries where manual human intervention is required to allow use before first execution. The impact has not been assessed yet, but it does seem likely it will cause issues.
Current Status
https://github.com/pact-foundation/pact-go/projects/2
Active work in progress: initial consumer and provider API has been implemented for both HTTP and Message pacts. Code is in an experimental state, and is not ready for external testing.
Dates: The current target is to have a beta by Q4 2020 calendar year.
Branch: https://github.com/pact-foundation/pact-go/tree/feat/v2.0.0
If you are interested in being an early tester of a beta branch, please get in contact at slack.pact.io or pact-foundation.slack.com in the #pact-go channel.
Audience
This issue is initially for Pact library maintainers, to document and discuss the implementation of the native Rust library into Pact Go.
Feature Overview: Specification Version 3.0
(see https://github.com/pact-foundation/pact-go/tree/feat/v2.0.0 for current implementation, what is documented below is the known delta).
Consumer Side
Provider Side
Pact Broker Integration
Rust integration activities
Release Activities
Miscellaneous
Summary
This issue tracks the major changes required to get Pact Go to a full v3.0.0 specification support, including integration with the native pact-reference library.
Moving to the native library will solve a number of pre-existing issues, as well as bring a number of positive new changes to the environment:
Current Status
https://github.com/pact-foundation/pact-go/projects/2
Active work in progress: initial consumer and provider API has been implemented for both HTTP and Message pacts. Code is in an experimental state, and is not ready for external testing.
Dates: The current target is to have a beta by Q4 2020 calendar year.
Branch: https://github.com/pact-foundation/pact-go/tree/feat/v2.0.0
If you are interested in being an early tester of a beta branch, please get in contact at slack.pact.io or pact-foundation.slack.com in the #pact-go channel.
Audience
This issue is initially for Pact library maintainers, to document and discuss the implementation of the native Rust library into Pact Go.
Feature Overview: Specification Version 3.0
(see https://github.com/pact-foundation/pact-go/tree/feat/v2.0.0 for current implementation, what is documented below is the known delta).
Consumer Side
Windows 32bit supportProvider Side
go testtool (for sub test output)Pact Broker Integration
Rust integration activities
Release Activities
Miscellaneous