compiletest: properly handle revisioned run-rustfix tests
This commit is contained in:
parent
fc1a4c5cc9
commit
5dc276c0da
@ -4252,7 +4252,7 @@ fn run_ui_test(&self) {
|
||||
if self.props.run_rustfix && self.config.compare_mode.is_none() {
|
||||
// And finally, compile the fixed code and make sure it both
|
||||
// succeeds and has no diagnostics.
|
||||
let rustc = self.make_compile_args(
|
||||
let mut rustc = self.make_compile_args(
|
||||
&self.expected_output_path(UI_FIXED),
|
||||
TargetLocation::ThisFile(self.make_exe_name()),
|
||||
emit_metadata,
|
||||
@ -4260,6 +4260,26 @@ fn run_ui_test(&self) {
|
||||
LinkToAux::Yes,
|
||||
Vec::new(),
|
||||
);
|
||||
|
||||
// If a test is revisioned, it's fixed source file can be named "a.foo.fixed", which,
|
||||
// well, "a.foo" isn't a valid crate name. So we explicitly mangle the test name
|
||||
// (including the revision) here to avoid the test writer having to manually specify a
|
||||
// `#![crate_name = "..."]` as a workaround. This is okay since we're only checking if
|
||||
// the fixed code is compilable.
|
||||
if self.revision.is_some() {
|
||||
let crate_name =
|
||||
self.testpaths.file.file_stem().expect("test must have a file stem");
|
||||
// crate name must be alphanumeric or `_`.
|
||||
let crate_name =
|
||||
crate_name.to_str().expect("crate name implies file name must be valid UTF-8");
|
||||
// replace `a.foo` -> `a__foo` for crate name purposes.
|
||||
// replace `revision-name-with-dashes` -> `revision_name_with_underscore`
|
||||
let crate_name = crate_name.replace(".", "__");
|
||||
let crate_name = crate_name.replace("-", "_");
|
||||
rustc.arg("--crate-name");
|
||||
rustc.arg(crate_name);
|
||||
}
|
||||
|
||||
let res = self.compose_and_run_compiler(rustc, None);
|
||||
if !res.status.success() {
|
||||
self.fatal_proc_rec("failed to compile fixed code", &res);
|
||||
|
@ -0,0 +1,9 @@
|
||||
// Check that revisioned `run-rustfix` does not fail with issues related to `.` in crate name.
|
||||
//@ revisions: foo
|
||||
//@[foo] run-rustfix
|
||||
#![deny(unused_variables)]
|
||||
|
||||
fn main() {
|
||||
let _x = 0usize;
|
||||
//~^ ERROR unused variable: `x`
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
error: unused variable: `x`
|
||||
--> $DIR/run-rustfix-revisions.rs:7:9
|
||||
|
|
||||
LL | let x = 0usize;
|
||||
| ^ help: if this is intentional, prefix it with an underscore: `_x`
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/run-rustfix-revisions.rs:4:9
|
||||
|
|
||||
LL | #![deny(unused_variables)]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
9
tests/ui/compiletest-self-test/run-rustfix-revisions.rs
Normal file
9
tests/ui/compiletest-self-test/run-rustfix-revisions.rs
Normal file
@ -0,0 +1,9 @@
|
||||
// Check that revisioned `run-rustfix` does not fail with issues related to `.` in crate name.
|
||||
//@ revisions: foo
|
||||
//@[foo] run-rustfix
|
||||
#![deny(unused_variables)]
|
||||
|
||||
fn main() {
|
||||
let x = 0usize;
|
||||
//~^ ERROR unused variable: `x`
|
||||
}
|
Loading…
Reference in New Issue
Block a user