Why
Since #29, the things keeping the DSL, the checked-in generated Java host (core/src/main/java/com/hubspot/boomslang/generated/BoomslangHostHostFunctions.java), and the ABI JSON (examples/rust-host/abi/*.abi.json) in sync are the golden tests in boomslang-hostgen/src/tests.rs — but CI never runs them. .github/workflows/build.yml has no cargo test step anywhere: ./mill test is just mvn test -pl tests (build.mill), and the container build only runs build-wasm.sh.
The examples/rust-host Wasmtime integration tests (buffer-too-small -2, missing-handler traps, async token round-trip — examples/rust-host/src/main.rs) also never run in CI; it's a standalone crate with its own Cargo.lock.
Concrete failure mode: edit the DSL in extensions/host-bridge/build.rs, rebuild the WASM, forget to regenerate the Java — guest and host now disagree and CI stays green unless a Java integration test happens to exercise the changed function.
What
- Add a CI step running
cargo test for boomslang-hostgen (suite runs in <1s) and examples/rust-host.
- Optionally: a regen-and-diff check that runs hostgen against the host-bridge DSL output and fails if
BoomslangHostHostFunctions.java differs from the checked-in copy (the golden test mostly covers this, but only if it runs).
Why
Since #29, the things keeping the DSL, the checked-in generated Java host (
core/src/main/java/com/hubspot/boomslang/generated/BoomslangHostHostFunctions.java), and the ABI JSON (examples/rust-host/abi/*.abi.json) in sync are the golden tests inboomslang-hostgen/src/tests.rs— but CI never runs them..github/workflows/build.ymlhas nocargo teststep anywhere:./mill testis justmvn test -pl tests(build.mill), and the container build only runsbuild-wasm.sh.The
examples/rust-hostWasmtime integration tests (buffer-too-small-2, missing-handler traps, async token round-trip —examples/rust-host/src/main.rs) also never run in CI; it's a standalone crate with its ownCargo.lock.Concrete failure mode: edit the DSL in
extensions/host-bridge/build.rs, rebuild the WASM, forget to regenerate the Java — guest and host now disagree and CI stays green unless a Java integration test happens to exercise the changed function.What
cargo testforboomslang-hostgen(suite runs in <1s) andexamples/rust-host.BoomslangHostHostFunctions.javadiffers from the checked-in copy (the golden test mostly covers this, but only if it runs).