Skip to content

Commit

Permalink
Rollup merge of #67735 - petrochenkov:uibool, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Support `-Z ui-testing=yes/no`

`ui-testing` is now a boolean option (`-Z ui-testing=yes/no`) and can be specified multiple times with later values overriding earlier values (`-Z ui-testing=yes -Z ui-testing=no` == `-Z ui-testing=no`), so it can be set in a hierarchical way, e.g. UI testing infra may enable it by default with specific tests being able to opt-out.

This way we can remove the special opt-out support from `compiletest`.

Inspired by #67709.
  • Loading branch information
Dylan-DPC committed Dec 31, 2019
2 parents cf24b6b + 208c1bf commit 529a42a
Show file tree
Hide file tree
Showing 8 changed files with 17 additions and 27 deletions.
6 changes: 6 additions & 0 deletions src/librustc_session/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_session/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand Down
8 changes: 4 additions & 4 deletions src/librustc_session/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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(
Expand All @@ -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(
Expand All @@ -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()),
),
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/librustdoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/ui-testing-optout.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// disable-ui-testing-normalization
// compile-flags: -Z ui-testing=no

// Line number < 10
type A = B; //~ ERROR
Expand Down
12 changes: 0 additions & 12 deletions src/tools/compiletest/src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)>,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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")
}
Expand Down
8 changes: 2 additions & 6 deletions src/tools/compiletest/src/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(&[
Expand Down

0 comments on commit 529a42a

Please sign in to comment.