From e650eef8b045c57be36d230f2a911a3775aefd1e Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sat, 24 Feb 2018 00:07:51 +0300 Subject: [PATCH] Implement opt-out from UI testing normalization --- src/test/ui/ui-testing-optout.rs | 104 +++++++++++++++++++++++++++ src/test/ui/ui-testing-optout.stderr | 20 ++++++ src/tools/compiletest/src/header.rs | 15 +++- src/tools/compiletest/src/runtest.rs | 4 +- 4 files changed, 140 insertions(+), 3 deletions(-) create mode 100644 src/test/ui/ui-testing-optout.rs create mode 100644 src/test/ui/ui-testing-optout.stderr diff --git a/src/test/ui/ui-testing-optout.rs b/src/test/ui/ui-testing-optout.rs new file mode 100644 index 0000000000000..3072bd64a2c7e --- /dev/null +++ b/src/test/ui/ui-testing-optout.rs @@ -0,0 +1,104 @@ +// disable-ui-testing-normalization + +// Line number < 10 +type A = B; //~ ERROR + +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// Line number >=10, <100 +type C = D; //~ ERROR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Line num >=100 +type E = F; //~ ERROR + +fn main() {} diff --git a/src/test/ui/ui-testing-optout.stderr b/src/test/ui/ui-testing-optout.stderr new file mode 100644 index 0000000000000..c9960f999b3c2 --- /dev/null +++ b/src/test/ui/ui-testing-optout.stderr @@ -0,0 +1,20 @@ +error[E0412]: cannot find type `B` in this scope + --> $DIR/ui-testing-optout.rs:4:10 + | +4 | type A = B; //~ ERROR + | ^ did you mean `A`? + +error[E0412]: cannot find type `D` in this scope + --> $DIR/ui-testing-optout.rs:17:10 + | +17 | type C = D; //~ ERROR + | ^ did you mean `A`? + +error[E0412]: cannot find type `F` in this scope + --> $DIR/ui-testing-optout.rs:102:10 + | +102 | type E = F; //~ ERROR + | ^ did you mean `A`? + +error: aborting due to 3 previous errors + diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs index d4d3d6c6e9a18..e48f42705f16a 100644 --- a/src/tools/compiletest/src/header.rs +++ b/src/tools/compiletest/src/header.rs @@ -226,9 +226,10 @@ pub struct TestProps { pub must_compile_successfully: bool, // rustdoc will test the output of the `--test` option pub check_test_line_numbers_match: bool, - // The test must be compiled and run successfully. Only used in UI tests for - // now. + // The test must be compiled and run successfully. Only used in UI tests for now. pub run_pass: 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)>, @@ -259,6 +260,7 @@ impl TestProps { must_compile_successfully: false, check_test_line_numbers_match: false, run_pass: false, + disable_ui_testing_normalization: false, normalize_stdout: vec![], normalize_stderr: vec![], failure_status: 101, @@ -379,6 +381,11 @@ impl TestProps { config.parse_must_compile_successfully(ln) || self.run_pass; } + 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); } @@ -505,6 +512,10 @@ impl Config { self.parse_name_directive(line, "must-compile-successfully") } + 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") } diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 3d751de3dbea3..d3f571dd8aeb4 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -1632,7 +1632,9 @@ impl<'test> TestCx<'test> { // a first time to get the compiler's output then compile with // "--error-format json" to check if all expected errors are actually there // and that no new one appeared. - rustc.arg("-Zui-testing"); + if !self.props.disable_ui_testing_normalization { + rustc.arg("-Zui-testing"); + } } MirOpt => { rustc.args(&[