rust-gpu/tests
2023-01-30 23:00:43 +02:00
..
deps-helper Applied workspace inheritance 2022-11-22 07:43:06 -08:00
src Apply clippy::uninlined_format_args suggestions for Rust 2021 (panic/assert). 2023-01-30 23:00:43 +02:00
ui Update to nightly-2022-12-18 2023-01-05 14:50:13 +02:00
Cargo.toml Upgraded compiletest_rs to 0.9.0 2022-11-24 08:15:36 -08:00
README.md Fix ByteAddressableBuffer PassMode::Pair (#837) 2022-01-10 09:35:03 +00:00

Compiletests

This folder contains tests known as "compiletests". Each file in the ui folder corresponds to a single compiletest. The way they work is a tool iterates over every file, and tries to compile it. At the start of the file, there's some meta-comments about the expected result of the compile: whether it should succeed compilation, or fail. If it is expected to fail, there's a corresponding .stderr file next to the file that contains the expected compiler error message.

The src folder here is the tool that iterates over every file in the ui folder. It uses the compiletests library, taken from rustc's own compiletest framework.

You can run compiletests via cargo compiletests. This is an alias set up in .cargo/config for cargo run --release -p compiletests --. You can filter to run specific tests by passing the (partial) filenames to cargo compiletests some_file_name, and update the .stderr files to contain new output via the --bless flag (with --bless, make sure you're actually supposed to be changing the .stderr files due to an intentional change, and hand-validate the output is correct afterwards).

Keep in mind that tests here here are not executed, merely checked for errors (including validating the resulting binary with spirv-val). Because of this, there might be some strange code in here - the point isn't to make a fully functional shader every time (that would take an annoying amount of effort), but rather validate that specific parts of the compiler are doing their job correctly (either succeeding as they should, or erroring as they should).