Files
rvbox/docs/testing.md
T

3.0 KiB

RVBox implementation test workflow

All Go, protobuf, and harness work runs in the pinned toolchain container. No host Go installation is used.

Run the normal pre-commit gate with:

make verify

Run focused unit tests with:

scripts/test-unit --package ./internal/domain --run UUIDv7 --race

The integration harness provides the Phase 0 sample suite, the incremental Phase 2 store suite, and the incremental Phase 3 server-session suite. The storage suite uses a real temporary SQLite database in WAL mode and a real segment/audit filesystem. The session suite uses a real HTTP/WebSocket listener, binary protobuf frames, SQLite fencing, and the race detector; neither mocks its respective durability or wire boundary:

scripts/test-env doctor
scripts/test-integration --suite sample --run-id my-sample
scripts/test-env status --run-id my-sample
scripts/test-env collect --run-id my-sample
scripts/test-env reset --run-id my-sample
scripts/test-env reuse --run-id my-sample
scripts/test-integration --suite sample --run-id my-sample --resume
scripts/test-env reset --run-id my-sample
scripts/test-env purge --run-id my-sample

scripts/test-integration --suite store --run-id store-smoke
scripts/test-env logs --run-id store-smoke
scripts/test-env collect --run-id store-smoke
scripts/test-env reset --run-id store-smoke
scripts/test-env purge --run-id store-smoke

scripts/test-integration --suite server-session --run-id session-smoke
scripts/test-env logs --run-id session-smoke
scripts/test-env collect --run-id session-smoke
scripts/test-env reset --run-id session-smoke
scripts/test-env purge --run-id session-smoke

Suite output is capped at 1 MiB and stored as artifacts/suite.log. A failed run remains inspectable and can be moved back to ready with recover, then resumed with the same run ID and deterministic shuffle seed. Test-run cleanup never removes the shared Go module or build-cache volumes.

Each run owns only .test-runs/<run-id> and resources explicitly recorded in that run's versioned manifest. The journal is append-only and fsynced. purge validates the run ID and manifest identity, refuses symlink targets or manifests that still list runtime resources, and then removes only that exact run. Purged artifacts are not recoverable. Dependency cache volumes are never part of run cleanup.

test/coverage.toml is the incremental requirement-to-test inventory. The make verify lint stage checks unique stable IDs and verifies every implemented test reference against source. A resettable Windows smoke VM is now available; its exact headless VirtualBox/Guest Control runbook is in section 2.6.1 of docs/implementation-plan.v1.md. Native Windows integration/E2E entries may run there once the Windows harness acquires the exclusive lease and performs the documented snapshot/health checks. The VM is only the minimum smoke lane, so deferred native multi-session/ambiguous-session, Server Core, and older-build entries remain explicitly blocked until their own fixtures exist. Wine or a protocol stub is not treated as equivalent coverage.