Skip to content

Commit

Permalink
Update tools code
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez committed Feb 25, 2018
1 parent 9b597a1 commit 1dc2015
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 38 deletions.
19 changes: 0 additions & 19 deletions src/tools/compiletest/src/json.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
40 changes: 21 additions & 19 deletions src/tools/compiletest/src/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down

0 comments on commit 1dc2015

Please sign in to comment.