From 37fbbf8101e7003d6de3d342db38fa9c55ab568f Mon Sep 17 00:00:00 2001 From: Kitson Kelly Date: Mon, 16 Nov 2020 13:19:31 +1100 Subject: fix(cli): local sources are not cached in memory (#8328) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #4743 Closes #5253 Fixes #5631 Fixes #6116 Co-authored-by: Bartek IwaƄczuk Co-authored-by: Luca Casonato --- test_util/src/lib.rs | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'test_util/src') diff --git a/test_util/src/lib.rs b/test_util/src/lib.rs index 870fbfb29..ab5e1080c 100644 --- a/test_util/src/lib.rs +++ b/test_util/src/lib.rs @@ -860,18 +860,35 @@ impl CheckOutputIntegrationTest { reader.read_to_string(&mut actual).unwrap(); let status = process.wait().expect("failed to finish process"); - let exit_code = status.code().unwrap(); - actual = strip_ansi_codes(&actual).to_string(); - - if self.exit_code != exit_code { - println!("OUTPUT\n{}\nOUTPUT", actual); - panic!( - "bad exit code, expected: {:?}, actual: {:?}", - self.exit_code, exit_code - ); + if let Some(exit_code) = status.code() { + if self.exit_code != exit_code { + println!("OUTPUT\n{}\nOUTPUT", actual); + panic!( + "bad exit code, expected: {:?}, actual: {:?}", + self.exit_code, exit_code + ); + } + } else { + #[cfg(unix)] + { + use std::os::unix::process::ExitStatusExt; + let signal = status.signal().unwrap(); + println!("OUTPUT\n{}\nOUTPUT", actual); + panic!( + "process terminated by signal, expected exit code: {:?}, actual signal: {:?}", + self.exit_code, signal + ); + } + #[cfg(not(unix))] + { + println!("OUTPUT\n{}\nOUTPUT", actual); + panic!("process terminated without status code on non unix platform, expected exit code: {:?}", self.exit_code); + } } + actual = strip_ansi_codes(&actual).to_string(); + let expected = if let Some(s) = self.output_str { s.to_owned() } else { -- cgit v1.2.3