Update tools code
This commit is contained in:
parent
9b597a1542
commit
1dc2015a9d
2 changed files with 21 additions and 38 deletions
|
@ -57,25 +57,6 @@ struct DiagnosticCode {
|
|||
explanation: Option<String>,
|
||||
}
|
||||
|
||||
pub fn extract_rendered(output: &str, proc_res: &ProcRes) -> String {
|
||||
output.lines()
|
||||
.filter_map(|line| if line.starts_with('{') {
|
||||
match json::decode::<Diagnostic>(line) {
|
||||
Ok(diagnostic) => diagnostic.rendered,
|
||||
Err(error) => {
|
||||
proc_res.fatal(Some(&format!("failed to decode compiler output as json: \
|
||||
`{}`\noutput: {}\nline: {}",
|
||||
error,
|
||||
line,
|
||||
output)));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
None
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
pub fn parse_output(file_name: &str, output: &str, proc_res: &ProcRes) -> Vec<Error> {
|
||||
output.lines()
|
||||
.flat_map(|line| parse_line(file_name, line, output, proc_res))
|
||||
|
|
|
@ -248,7 +248,7 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
|
||||
fn run_cfail_test(&self) {
|
||||
let proc_res = self.compile_test();
|
||||
let proc_res = self.compile_test(&[]);
|
||||
self.check_if_test_should_compile(&proc_res);
|
||||
self.check_no_compiler_crash(&proc_res);
|
||||
|
||||
|
@ -267,7 +267,7 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
|
||||
fn run_rfail_test(&self) {
|
||||
let proc_res = self.compile_test();
|
||||
let proc_res = self.compile_test(&[]);
|
||||
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
|
@ -309,7 +309,7 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
|
||||
fn run_rpass_test(&self) {
|
||||
let proc_res = self.compile_test();
|
||||
let proc_res = self.compile_test(&[]);
|
||||
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
|
@ -336,7 +336,7 @@ impl<'test> TestCx<'test> {
|
|||
return self.run_rpass_test();
|
||||
}
|
||||
|
||||
let mut proc_res = self.compile_test();
|
||||
let mut proc_res = self.compile_test(&[]);
|
||||
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
|
@ -578,7 +578,7 @@ impl<'test> TestCx<'test> {
|
|||
let mut cmds = commands.join("\n");
|
||||
|
||||
// compile test file (it should have 'compile-flags:-g' in the header)
|
||||
let compiler_run_result = self.compile_test();
|
||||
let compiler_run_result = self.compile_test(&[]);
|
||||
if !compiler_run_result.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &compiler_run_result);
|
||||
}
|
||||
|
@ -835,7 +835,7 @@ impl<'test> TestCx<'test> {
|
|||
|
||||
fn run_debuginfo_lldb_test_no_opt(&self) {
|
||||
// compile test file (it should have 'compile-flags:-g' in the header)
|
||||
let compile_result = self.compile_test();
|
||||
let compile_result = self.compile_test(&[]);
|
||||
if !compile_result.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &compile_result);
|
||||
}
|
||||
|
@ -1272,12 +1272,15 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
}
|
||||
|
||||
fn compile_test(&self) -> ProcRes {
|
||||
fn compile_test(&self, extra_args: &[&'static str]) -> ProcRes {
|
||||
let mut rustc = self.make_compile_args(
|
||||
&self.testpaths.file,
|
||||
TargetLocation::ThisFile(self.make_exe_name()),
|
||||
);
|
||||
|
||||
if !extra_args.is_empty() {
|
||||
rustc.args(extra_args);
|
||||
}
|
||||
rustc.arg("-L").arg(&self.aux_output_dir_name());
|
||||
|
||||
match self.config.mode {
|
||||
|
@ -1629,8 +1632,11 @@ impl<'test> TestCx<'test> {
|
|||
.iter()
|
||||
.any(|s| s.starts_with("--error-format"))
|
||||
{
|
||||
rustc.args(&["--error-format", "json"]);
|
||||
},
|
||||
// In case no "--error-format" has been given in the test, we'll compile
|
||||
// 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.
|
||||
}
|
||||
MirOpt => {
|
||||
rustc.args(&[
|
||||
"-Zdump-mir=all",
|
||||
|
@ -2109,7 +2115,7 @@ impl<'test> TestCx<'test> {
|
|||
fn run_codegen_units_test(&self) {
|
||||
assert!(self.revision.is_none(), "revisions not relevant here");
|
||||
|
||||
let proc_res = self.compile_test();
|
||||
let proc_res = self.compile_test(&[]);
|
||||
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
|
@ -2493,7 +2499,7 @@ impl<'test> TestCx<'test> {
|
|||
.iter()
|
||||
.any(|s| s.contains("--error-format"));
|
||||
|
||||
let proc_res = self.compile_test();
|
||||
let proc_res = self.compile_test(&[]);
|
||||
self.check_if_test_should_compile(&proc_res);
|
||||
|
||||
let expected_stderr_path = self.expected_output_path(UI_STDERR);
|
||||
|
@ -2505,13 +2511,8 @@ impl<'test> TestCx<'test> {
|
|||
let normalized_stdout =
|
||||
self.normalize_output(&proc_res.stdout, &self.props.normalize_stdout);
|
||||
|
||||
let stderr = if explicit {
|
||||
proc_res.stderr.clone()
|
||||
} else {
|
||||
json::extract_rendered(&proc_res.stderr, &proc_res)
|
||||
};
|
||||
|
||||
let normalized_stderr = self.normalize_output(&stderr, &self.props.normalize_stderr);
|
||||
let normalized_stderr = self.normalize_output(&proc_res.stderr,
|
||||
&self.props.normalize_stderr);
|
||||
|
||||
let mut errors = 0;
|
||||
errors += self.compare_output("stdout", &normalized_stdout, &expected_stdout);
|
||||
|
@ -2544,6 +2545,7 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
}
|
||||
if !explicit {
|
||||
let proc_res = self.compile_test(&["--error-format", "json"]);
|
||||
if !expected_errors.is_empty() || !proc_res.status.success() {
|
||||
// "// error-pattern" comments
|
||||
self.check_expected_errors(expected_errors, &proc_res);
|
||||
|
@ -2555,7 +2557,7 @@ impl<'test> TestCx<'test> {
|
|||
}
|
||||
|
||||
fn run_mir_opt_test(&self) {
|
||||
let proc_res = self.compile_test();
|
||||
let proc_res = self.compile_test(&[]);
|
||||
|
||||
if !proc_res.status.success() {
|
||||
self.fatal_proc_rec("compilation failed!", &proc_res);
|
||||
|
|
Loading…
Reference in a new issue