Skip to content

Testing Plan

Automated test suites

Suite Location Covers
Integration tests/skeleton.rs Parsing, validation, round-trip, section fixtures
CLI tests/cli.rs Exit codes, JSON output, all commands
JSON Schema conformance tests/json_schema_conformance.rs Valid/invalid fixtures vs schema/odcs-v3.1.0.json; upstream corpus
Shared fixtures tests/common/mod.rs Canonical valid fixture list and JSON Schema helpers
Cross-file / contract set tests/cross_file.rs --dep, --include, duplicate contract id rejection
Compatibility tests/compatibility.rs Contract diff and breaking-change classification
Validation negative tests/validation_negative.rs Parser hardening, duplicate keys, server typos, dedup
Python python/tests/test_pyodcs.py API and CLI parity
Doc tests src/lib.rs Public API example

Running tests

# Rust (default features)
cargo test --locked

# Rust formatting and lint
cargo fmt --all -- --check
cargo clippy --all-targets -- -D warnings
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --locked

# Python
python -m venv .venv && source .venv/bin/activate
pip install maturin pytest
maturin develop --features python --locked
pytest python/tests -v

CI runs the above via .github/workflows/checks.yml.

MkDocs site (Read the Docs): pip install -r docs/requirements.txt && mkdocs build --strict

Coverage by category

Category Status
Parse valid ODCS YAML Covered (skeleton.rs)
Parse valid ODCS JSON Covered
Reject malformed YAML/JSON Covered
Reject missing required fields Covered
Validate schema object names Covered (validation phase)
Validate quality rules Covered (library metrics, rule types)
Validate SLA structures Parse fixtures; cross-field SLA element refs in structural phase; scheduler/schedule pairing in sections phase
Section semantics (0.8.0) Roles, support, SLA, pricing negative fixtures in validation_negative.rs
Preserve custom properties Covered
Structural cross-field rules Covered (validation_negative.rs, structural fixtures)
CLI success/failure exit codes Covered (cli.rs)
JSON output format Covered
JSON Schema conformance Covered (json_schema_conformance.rs, default validation since 0.4.0)
Spec parity (default vs JSON Schema) Covered (json_schema_conformance.rs via tests/common)
Schema export Covered (cli.rs)
Oversized input (MAX_PARSE_BYTES) Covered (validation_negative.rs)
Registry path confinement Covered (registry.rs, Unix symlink escape)
Nested duplicate-key detection Covered (validation_negative.rs, cli.rs, Python tests)
JSON Schema dedup vs Rust validators Covered (validation_negative.rs)

Fixtures

Valid and invalid fixtures live in tests/fixtures/. Upstream examples are in tests/fixtures/upstream/ (sync via scripts/sync-upstream-examples.sh).