mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-18 10:55:44 +00:00
86 lines
2.5 KiB
Rust
86 lines
2.5 KiB
Rust
//! Tests for the `bless` option
|
|
|
|
extern crate compiletest_rs as compiletest;
|
|
|
|
mod test_support;
|
|
use test_support::{testsuite, TestsuiteBuilder, GLOBAL_ROOT};
|
|
use compiletest::Config;
|
|
|
|
fn setup(mode: &str) -> (Config, TestsuiteBuilder) {
|
|
let builder = testsuite(mode);
|
|
let mut config = Config::default();
|
|
let cfg_mode = mode.parse().expect("Invalid mode");
|
|
config.mode = cfg_mode;
|
|
config.src_base = builder.root.clone();
|
|
config.build_base = GLOBAL_ROOT.join("build_base");
|
|
|
|
(config, builder)
|
|
}
|
|
|
|
#[test]
|
|
fn test_bless_new_file() {
|
|
let (mut config, builder) = setup("ui");
|
|
config.bless = true;
|
|
|
|
builder.mk_file(
|
|
"foobar.rs",
|
|
r#"
|
|
#[warn(unused_variables)]
|
|
fn main() {
|
|
let abc = "foobar";
|
|
}
|
|
"#,
|
|
);
|
|
compiletest::run_tests(&config);
|
|
|
|
// Blessing should cause the stderr to be created directly
|
|
assert!(builder.file_contents("foobar.stderr").contains("unused variable"));
|
|
|
|
// And a second run of the tests, with blessing disabled should work just fine
|
|
config.bless = false;
|
|
compiletest::run_tests(&config);
|
|
}
|
|
|
|
#[test]
|
|
fn test_bless_update_file() {
|
|
let (mut config, builder) = setup("ui");
|
|
config.bless = true;
|
|
|
|
builder.mk_file(
|
|
"foobar2.rs",
|
|
r#"
|
|
#[warn(unused_variables)]
|
|
fn main() {
|
|
let abc = "foobar_update";
|
|
}
|
|
"#,
|
|
);
|
|
builder.mk_file(
|
|
"foobar2.stderr",
|
|
r#"
|
|
warning: unused variable: `abc`
|
|
--> $DIR/foobar2.rs:4:27
|
|
|
|
|
4 | let abc = "foobar";
|
|
| ^^^ help: if this is intentional, prefix it with an underscore: `_abc`
|
|
|
|
|
note: the lint level is defined here
|
|
--> $DIR/foobar2.rs:2:26
|
|
|
|
|
2 | #[warn(unused_variables)]
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
warning: 1 warning emitted
|
|
"#,
|
|
);
|
|
compiletest::run_tests(&config);
|
|
|
|
// Blessing should cause the stderr to be created directly
|
|
assert!(builder.file_contents("foobar2.stderr").contains("unused variable"));
|
|
assert!(builder.file_contents("foobar2.stderr").contains("foobar_update"));
|
|
|
|
// And a second run of the tests, with blessing disabled should work just fine
|
|
config.bless = false;
|
|
compiletest::run_tests(&config);
|
|
}
|