Support -Z ui-testing=yes/no

This commit is contained in:
Vadim Petrochenkov 2019-12-30 00:23:19 +03:00
parent 0fb4380136
commit 208c1bff0a
8 changed files with 17 additions and 27 deletions

View File

@ -593,6 +593,12 @@ impl Options {
}
}
impl DebuggingOptions {
pub fn ui_testing(&self) -> bool {
self.ui_testing.unwrap_or(false)
}
}
// The type of entry function, so users can have their own entry functions
#[derive(Copy, Clone, PartialEq, Hash, Debug)]
pub enum EntryFnType {

View File

@ -904,7 +904,7 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
`mir` (the MIR), or `mir-cfg` (graphviz formatted MIR)"),
run_dsymutil: Option<bool> = (None, parse_opt_bool, [TRACKED],
"run `dsymutil` and delete intermediate object files"),
ui_testing: bool = (false, parse_bool, [UNTRACKED],
ui_testing: Option<bool> = (None, parse_opt_bool, [UNTRACKED],
"format compiler diagnostics in a way that's better suitable for UI testing"),
embed_bitcode: bool = (false, parse_bool, [TRACKED],
"embed LLVM bitcode in object files"),

View File

@ -869,7 +869,7 @@ fn default_emitter(
short,
external_macro_backtrace,
);
Box::new(emitter.ui_testing(sopts.debugging_opts.ui_testing))
Box::new(emitter.ui_testing(sopts.debugging_opts.ui_testing()))
} else {
let emitter = match dst {
None => EmitterWriter::stderr(
@ -890,7 +890,7 @@ fn default_emitter(
external_macro_backtrace,
),
};
Box::new(emitter.ui_testing(sopts.debugging_opts.ui_testing))
Box::new(emitter.ui_testing(sopts.debugging_opts.ui_testing()))
}
}
(config::ErrorOutputType::Json { pretty, json_rendered }, None) => Box::new(
@ -901,7 +901,7 @@ fn default_emitter(
json_rendered,
external_macro_backtrace,
)
.ui_testing(sopts.debugging_opts.ui_testing),
.ui_testing(sopts.debugging_opts.ui_testing()),
),
(config::ErrorOutputType::Json { pretty, json_rendered }, Some(dst)) => Box::new(
JsonEmitter::new(
@ -912,7 +912,7 @@ fn default_emitter(
json_rendered,
external_macro_backtrace,
)
.ui_testing(sopts.debugging_opts.ui_testing),
.ui_testing(sopts.debugging_opts.ui_testing()),
),
}
}

View File

@ -273,7 +273,7 @@ impl Options {
error_format,
None,
debugging_options.treat_err_as_bug,
debugging_options.ui_testing,
debugging_options.ui_testing(),
);
// check for deprecated options

View File

@ -449,7 +449,7 @@ fn main_options(options: config::Options) -> i32 {
options.error_format,
None,
options.debugging_options.treat_err_as_bug,
options.debugging_options.ui_testing,
options.debugging_options.ui_testing(),
);
match (options.should_test, options.markdown_input()) {
@ -466,7 +466,7 @@ fn main_options(options: config::Options) -> i32 {
let diag_opts = (
options.error_format,
options.debugging_options.treat_err_as_bug,
options.debugging_options.ui_testing,
options.debugging_options.ui_testing(),
options.edition,
);
let show_coverage = options.show_coverage;

View File

@ -1,4 +1,4 @@
// disable-ui-testing-normalization
// compile-flags: -Z ui-testing=no
// Line number < 10
type A = B; //~ ERROR

View File

@ -376,8 +376,6 @@ pub struct TestProps {
pub fail_mode: Option<FailMode>,
// rustdoc will test the output of the `--test` option
pub check_test_line_numbers_match: bool,
// Do not pass `-Z ui-testing` to UI tests
pub disable_ui_testing_normalization: bool,
// customized normalization rules
pub normalize_stdout: Vec<(String, String)>,
pub normalize_stderr: Vec<(String, String)>,
@ -422,7 +420,6 @@ impl TestProps {
fail_mode: None,
ignore_pass: false,
check_test_line_numbers_match: false,
disable_ui_testing_normalization: false,
normalize_stdout: vec![],
normalize_stderr: vec![],
failure_status: -1,
@ -569,11 +566,6 @@ impl TestProps {
self.ignore_pass = config.parse_ignore_pass(ln);
}
if !self.disable_ui_testing_normalization {
self.disable_ui_testing_normalization =
config.parse_disable_ui_testing_normalization(ln);
}
if let Some(rule) = config.parse_custom_normalization(ln, "normalize-stdout") {
self.normalize_stdout.push(rule);
}
@ -826,10 +818,6 @@ impl Config {
}
}
fn parse_disable_ui_testing_normalization(&self, line: &str) -> bool {
self.parse_name_directive(line, "disable-ui-testing-normalization")
}
fn parse_check_test_line_numbers_match(&self, line: &str) -> bool {
self.parse_name_directive(line, "check-test-line-numbers-match")
}

View File

@ -1863,17 +1863,13 @@ impl<'test> TestCx<'test> {
if self.props.error_patterns.is_empty() {
rustc.args(&["--error-format", "json"]);
}
if !self.props.disable_ui_testing_normalization {
rustc.arg("-Zui-testing");
}
rustc.arg("-Zui-testing");
}
Ui => {
if !self.props.compile_flags.iter().any(|s| s.starts_with("--error-format")) {
rustc.args(&["--error-format", "json"]);
}
if !self.props.disable_ui_testing_normalization {
rustc.arg("-Zui-testing");
}
rustc.arg("-Zui-testing");
}
MirOpt => {
rustc.args(&[