From: Rust Maintainers Date: Mon, 6 Nov 2017 09:03:32 +0000 (+0000) Subject: u-output-failed-commands X-Git-Tag: archive/raspbian/1.21.0+dfsg1-3+rpi1^2~15 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=80325dab6c0a0d76d603cbab4d5fdf88b0507a9d;p=rustc.git u-output-failed-commands Gbp-Pq: Name u-output-failed-commands.patch --- diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 92fb2105b7..2cf30a0447 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -67,8 +67,8 @@ impl fmt::Display for TestKind { fn try_run(build: &Build, cmd: &mut Command) { if !build.fail_fast { if !build.try_run(cmd) { - let failures = build.delayed_failures.get(); - build.delayed_failures.set(failures + 1); + let mut failures = build.delayed_failures.borrow_mut(); + failures.push(format!("{:?}", cmd)); } } else { build.run(cmd); @@ -78,8 +78,8 @@ fn try_run(build: &Build, cmd: &mut Command) { fn try_run_quiet(build: &Build, cmd: &mut Command) { if !build.fail_fast { if !build.try_run_quiet(cmd) { - let failures = build.delayed_failures.get(); - build.delayed_failures.set(failures + 1); + let mut failures = build.delayed_failures.borrow_mut(); + failures.push(format!("{:?}", cmd)); } } else { build.run_quiet(cmd); diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 84a9e56b64..6692241d40 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -134,13 +134,13 @@ extern crate toml; #[cfg(unix)] extern crate libc; -use std::cell::Cell; +use std::cell::RefCell; use std::collections::{HashSet, HashMap}; use std::env; use std::fs::{self, File}; use std::io::Read; use std::path::{PathBuf, Path}; -use std::process::Command; +use std::process::{self, Command}; use std::slice; use build_helper::{run_silent, run_suppressed, try_run_silent, try_run_suppressed, output, mtime}; @@ -245,7 +245,7 @@ pub struct Build { crates: HashMap, Crate>, is_sudo: bool, ci_env: CiEnv, - delayed_failures: Cell, + delayed_failures: RefCell>, } #[derive(Debug)] @@ -327,7 +327,7 @@ impl Build { lldb_python_dir: None, is_sudo, ci_env: CiEnv::current(), - delayed_failures: Cell::new(0), + delayed_failures: RefCell::new(Vec::new()), } } @@ -366,6 +366,16 @@ impl Build { metadata::build(self); builder::Builder::run(&self); + + // Check for postponed failures from `test --no-fail-fast`. + let failures = self.delayed_failures.borrow(); + if failures.len() > 0 { + println!("\n{} command(s) did not execute successfully:\n", failures.len()); + for failure in failures.iter() { + println!(" - {}\n", failure); + } + process::exit(1); + } } /// Clear out `dir` if `input` is newer.