Forbid //@ compile-flags: -Cincremental= in tests

Tests should not try to manually enable incremental compilation with
`-Cincremental`, because that typically results in stray directories being
created in the repository root.

Instead, use the `//@ incremental` directive, which instructs compiletest to
handle the details of passing `-Cincremental` with a fresh directory.
This commit is contained in:
Zalathar 2025-10-01 21:45:50 +10:00
parent 3369e82c6b
commit 59c4dfe59d
2 changed files with 26 additions and 1 deletions

View file

@ -415,10 +415,18 @@ impl TestProps {
config.parse_name_value_directive(ln, COMPILE_FLAGS, testfile)
{
let flags = split_flags(&flags);
for flag in &flags {
for (i, flag) in flags.iter().enumerate() {
if flag == "--edition" || flag.starts_with("--edition=") {
panic!("you must use `//@ edition` to configure the edition");
}
if (flag == "-C"
&& flags.get(i + 1).is_some_and(|v| v.starts_with("incremental=")))
|| flag.starts_with("-Cincremental=")
{
panic!(
"you must use `//@ incremental` to enable incremental compilation"
);
}
}
self.compile_flags.extend(flags);
}

View file

@ -0,0 +1,17 @@
//@ revisions: good bad bad-space
//@ check-pass
//@[bad] compile-flags: -Cincremental=true
//@[bad] should-fail
//@[bad-space] compile-flags: -C incremental=dir
//@[bad-space] should-fail
fn main() {}
// Tests should not try to manually enable incremental compilation with
// `-Cincremental`, because that typically results in stray directories being
// created in the repository root.
//
// Instead, use the `//@ incremental` directive, which instructs compiletest
// to handle the details of passing `-Cincremental` with a fresh directory.