Skip to content

The core/tests/ harness

Most differential tests render on the software adapter (prefer_software) so they hold on any GPU; the exceptions say so below. Run the whole suite:

Terminal window
cargo nextest run -p rlx-core # what CI runs (per-test process isolation)
cargo test -p rlx-core # single binaries only — see the two caveats below

Use nextest for the whole suite, for two independent reasons.

preset’s zero-allocation assertion counts allocations through a process-global allocator hook, so it is only reliable under nextest’s per-test process isolation — under stock cargo test a concurrently-running test’s allocations bleed into the count.

And stock cargo test runs a binary’s tests as threads in one process, which the GPU tests do not survive. Several of them build and drop a Renderer (and so a wgpu device) concurrently, and the driver aborts the process with STATUS_ACCESS_VIOLATION--test transition every run on WARP, --lib intermittently at teardown, --lib render::post since Plan 0035. This is a runner artifact, not a failing test: the same binaries pass in full under cargo nextest run, which gives each test its own process. If a cargo test invocation aborts with 0xc0000005, re-run it under nextest (or -- --test-threads=1) before concluding anything about coverage.

Tests that need a real GPU (background_composite, and the in-crate dual-live dissolve check in render/mod.rs) skip themselves when only a software rasterizer is present, per ADR-0016. WARP mis-renders both: the fullscreen-scene + background pipeline set, and — once a dissolve allocates its blend targets mid-run — what the feedback trails stage resolves to.

In this section

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.