A smaller version of compiletest-rs
If your test tests for failure, you need to add a //~
annotation where the error is happening
to make sure that the test will always keep failing with a specific message at the annotated line.
//~ ERROR: XXX
make sure the stderr output contains XXX
for an error in the line where this comment is written
HELP
, WARN
or NOTE
for different kind of message
ERROR
levels.XXX
is of the form /XXX/
it is treated as a regex instead of a substring and will succeed if the regex matches.In order to change how a single test is tested, you can add various //@
comments to the test.
Any other comments will be ignored, and all //@
comments must be formatted precisely as
their command specifies, or the test will fail without even being run.
//@ignore-C
avoids running the test when condition C
is met.
C
can be target-XXX
, which checks whether the target triple contains XXX
.C
can also be one of 64bit
, 32bit
or 16bit
.C
can also be on-host
, which will only run the test during cross compilation testing.//@only-C
only runs the test when condition C
is met. The conditions are the same as with ignore
.//@stderr-per-bitwidth
produces one stderr file per bitwidth, as they may differ significantly sometimes//@error-pattern: XXX
make sure the stderr output contains XXX
//@revisions: XXX YYY
runs the test once for each space separated name in the list
//~
comments can be restricted to specific revisions by adding the revision name before the ~
in square brackets: //[XXX]~
//@compile-flags: XXX
appends XXX
to the command line arguments passed to the rustc driver
//@rustc-env: XXX=YYY
sets the env var XXX
to YYY
for the rustc driver execution.
//@normalize-stderr-test: "REGEX" -> "REPLACEMENT"
replaces all matches of REGEX
in the stderr with REPLACEMENT
. The replacement may specify $1
and similar backreferences to paste captures.
//@require-annotations-for-level: LEVEL
can be used to change the level of diagnostics that require a corresponding annotation.
HELP
, WARN
or NOTE
, as these would automatically require annotations for all other diagnostics of the same or higher level.ignore-target-*
and only-target-*
opereate solely on the triple, instead of supporting things like macos
//~
comments can be individualized per revisionui
tests0
in order to make them get run first