# step: native sink · wai-rs and native_sink_verify.py # order: 460 # features: native_sink # paths: wai/extensions/native-sink.md # independent: native-sink live python3 -I live-conformance/native_sink_verify.py live-conformance/native-sink # # The native sink (extensions/native-sink.md): the reference module's unit tests (dates, # durations and attribute lists read as a player reads them, origins serialized as RFC 6454 # does, names that state a content hash and names that do not, the acknowledgements # rebuilt from hashes alone equal to stream-audit's reference, a bundle that verifies and # one refused for another owner or channel) and tests/native_sink.rs (vectors.json # regenerates byte for byte from its seeds and no other file is there, every call gets the # answer it states, §8 lists exactly the reasons the corpus reaches, and every case run # through the C interface's symbols gets the same answers); and, in the step of every # independent verifier above, the corpus's second # implementation, native_sink_verify.py, written from the extension's text and sharing no # code with wai-rs, which replays every case, reads playlist receipts and their chain with # http_verify.py, holds every bundle to its own session field by field and verifies it with # stream_audit_verify.py, requires every mutated copy of the corpus to fail, and drops each # of its own checks in turn and requires the corpus to catch the weakened verifier; # standard library only, run isolated (-I). The Swift package runs in wai-sink-swift.yml. # # The paths this step brings to the workflow's trigger, and why: # wai/extensions/native-sink.md: tests/native_sink.rs requires this extension's §8 to list exactly # the reasons its corpus reaches, and native_sink_verify.py reads that table. set -euo pipefail (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --lib native_sink::) (cd wai-rs && cargo test --no-default-features --features "$WAI_FEATURES" --test native_sink)