This repo contains a large number of end-to-end tests at
Test input files have either the
.spvasm file extension.
Each test input file is tested against each of the Tint backends. There are
<number-of-tint-backends> tests that are performed on an unfiltered end-to-end test run.
Each backend test can have an expectation file. This expectation file sits next to the input file, with a
<input-file>.expected.<format> extension. For example the test
test/foo.wgsl would have the HLSL expectation file
An expectation file contains the expected output of Tint, when passed the input file for the given backend.
If the first line of the expectation file starts
SKIP, then the test will be skipped instead of failing the end-to-end test run. It is good practice to include after the
SKIP a reason for why the test is being skipped, along with any additional details, such as compiler error messages.
To run the end-to-end tests use the
<tint>/test/test-all.sh script, passing the path to the tint executable as the first command line argument.
You can pass
--help to see the full list of command line flags.
The most commonly used flags are:
|Filters the testing to subset of the tests. The filter argument is a glob pattern that can include
* for any substring of a file or directory, and
** for any number of directories.
--filter 'expressions/**/i32.wgsl' will test all the
i32.wgsl expression tests.
|Filters the tests to the particular backend.
--format hlsl will just test the HLSL backend.
|Generate expectation files for the tests that previously had no expectation file, or were marked as
SKIP but now pass.
SKIP expectation files for tests that are not currently passing.
Each test should be as small as possible, and focused on the particular feature being tested.
Use sub-directories whenever possible to group similar tests, and try to keep the pattern of directories as consistent as possible between different tests. This helps filter tests using the
--filter glob patterns.