You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Add property/fuzz tests, Go -race and a coverage report to the gate #54
The gate (.github/workflows/gate.yml) runs rustfmt, clippy -D warnings, cargo test --workspace, gofmt, go vet and go test. It has no property/fuzz testing, no Go race detector and no coverage report. #52 (a panic and a silent duplicate-key corruption reachable through the public API) is exactly what a generator over Value finds in seconds.
Proposal
Property / differential fuzzing: arbitrary YAML/JSON → reader → canonical → digest in Rust, compared with the Go result on the same input (extends the existing conformance/differential/ corpus idea with generated inputs). Properties to assert: no panic for any input the reader accepts and for any Value constructible through the public API; canonical output is valid JSON with sorted unique keys; canonical(canonical(x)) == canonical(x); Rust digest == Go digest.
Rust: proptest (runs in the normal cargo test, fixed case count in CI) and/or cargo-fuzz targets run on a schedule.
Go: native testing.F fuzz targets plus a seed corpus shared with Rust.
Go -race: go test -race ./... in the gate.
Coverage report (cargo llvm-cov / go test -cover) published in the job summary first; add a floor only after seeing the baseline, and ratchet it up, never down.
Counterexamples found by the fuzzers are added to the differential corpus as vectors.
Depends on #52 so the first fuzz run is not red on a known bug; #53 (private fields) will shrink the fuzz surface further but is not a prerequisite.
Acceptance
gate.yml runs the property tests and go test -race; a scheduled job runs the long fuzz targets.
Resolved by #59 (merge 463ffde). Property/fuzz tests, Go -race and the coverage report are part of the gate. The first manual fuzz.yml run on main (20 000 cases per property, 30 s Go fuzz) succeeded; the scheduled run is Mondays 03:17 UTC.
Activity
sinkog commentedon Oct 17, 2026
Resolved by #59 (merge
463ffde). Property/fuzz tests, Go-raceand the coverage report are part of the gate. The first manualfuzz.ymlrun onmain(20 000 cases per property, 30 s Go fuzz) succeeded; the scheduled run is Mondays 03:17 UTC.