Files
craft-libs/crates/pdf/read-only-contract/README.md

28 lines
1.6 KiB
Markdown

# Independent read-only contract
This nested workspace tests the shipping `craft-pdf/read` graph separately from the parent
workspace, whose facade dev-dependencies include an interpreter. Its sole normal dependency is
`craft-pdf` with defaults disabled and `read` enabled. The local syntax patch is required to
exercise the vendored decode-limit and incremental-Flate behavior. No interpreter, rasterizer,
writer, or image codec dependency is declared here.
The same three assertions run natively and under `wasm-bindgen-test`: valid Flate page opening
and complete incremental consumption; independent per-document ordinary stream limits including
zero and a tighter per-call limit; and the caller input limit on borrowed/shared opening. The
17-byte synthetic compressed payload expands to 512 known bytes. The only target-specific dev
dependency is the WASM test harness.
From the repository root:
```sh
cargo test --manifest-path crates/pdf/read-only-contract/Cargo.toml --locked
cargo test --manifest-path crates/pdf/read-only-contract/Cargo.toml --locked --target wasm32-unknown-unknown
cargo tree --manifest-path crates/pdf/read-only-contract/Cargo.toml --locked --edges normal,features
```
Use a matching `wasm-bindgen-test-runner` through `CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER` for
actual WASM runtime execution. The native normal dependency graph must contain only the
`craft-pdf/read` path and its syntax/std dependencies; `hayro-interpret`, `hayro`, `krilla`,
`hayro-ccitt`, `hayro-jbig2`, `hayro-jpeg2000`, `zune-jpeg`, and the syntax `images`/`unsafe` features
must be absent. Keep the fixture's own lockfile for reproducibility.