Behaviour aims to satisfy RFC 004: Consistent wire-format test cases, but there are a few differences.
This project has two main components:
- a verification server, is a reference server used to test Conjure client generators and libraries.
- a verification client, is used to test Conjure server generators and libraries.
The gradle build (java) and cargo build (rust) are indepndent of one another. Gradle is responsible for generating the Conjure definitions and Java test cases, and cargo is responsible for running the rust tests. Gradle needs a minimum of Java 17 to build.
-
Run
./gradlew buildto generate the Conjure definitions and Java test cases. -
Install rustup using instructions on https://rustup.rs . Choose any modern version of rust when prompted.
-
The Rust toolchain is pinned in
rust-toolchain.toml; rustup will automatically download and use it (including therustfmtandclippycomponents) for any cargo command run in this repo. Note that you must be using a rustup supplied version ofcargoto use this bootstrapping feature. Ifcargowas installed using something like brew, or is very old, then this bootstrapping will be ignored. -
Build the Rust workspace and run the test suite:
cargo build --workspace cargo test --workspaceIf any errors occur, try running
./gradlew buildfirst — the server tests read the generated test cases fromverification-server-api/build.A few
conjure-verification-http-clienttests need external setup:googlerequires internet access, andgoogle_http_proxyandgoogle_https_proxyare#[ignore]d because they require a local TLS proxy (run them withcargo test -- --ignored). -
If inspecting/editing code, install the rust plugin for the IDE of your choice.
- IntelliJ has superior code completion and can get the type of arbitrary expressions (using the Rust plugin), but make sure to tick "Use cargo check to analyze code" - slower, but otherwise IntelliJ won't show most errors inline
- for VSCode, install the
rust-analyzerextension and CodeLLDB for debuggingA
-
For vibecoding, direct the agent to read this README in lieu of an AGENTS.md file.
This project is made available under the Apache 2.0 License.