Skip to content

Latest commit

History

History
23 lines (19 loc) 路 1.57 KB

README.md

File metadata and controls

23 lines (19 loc) 路 1.57 KB

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).