From a5932b15074ac6c526446eb60d13a0c20e438835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Kr=C3=BCger?= Date: Fri, 29 Mar 2024 22:25:16 +0100 Subject: [PATCH] compiletest: switch crash detection logic for run_crash_test around previously we would explicitly look for exit code 101 and call it a crash, however in case of stack overflows for example, exit code could differ due to the process being killed by a signal which is not easy to detect on none-unix. So now we reject everything that exits with 0 (no error) or 1 (compiler failed to compile code) and "accept" everyhing else as an internal compiler error. --- src/tools/compiletest/src/runtest.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index da305aff953..9b98e78b15b 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -354,7 +354,7 @@ impl<'test> TestCx<'test> { if self.props.should_ice { match proc_res.status.code() { Some(101) => (), - _ => self.fatal("test no longer crashes/triggers ICE! Please annotate it and add it as test to tests/ui or wherever you see fit"), + _ => self.fatal("expected ICE"), } } @@ -366,10 +366,11 @@ impl<'test> TestCx<'test> { let proc_res = self.compile_test(WillExecute::No, self.should_emit_metadata(pm)); // if a test does not crash, consider it an error - match proc_res.status.code() { - Some(101) => (), - Some(other) => self.fatal(&format!("expected exit code 101, got: {}", other)), - e => self.fatal(&format!("expected ICE, got '{:?}'", e)), + if !proc_res.status.success() { + match proc_res.status.code() { + Some(1 | 0) => self.fatal(&format!("test no longer crashes/triggers ICE! Please annotate it and add it as test to tests/ui or wherever you see fit")), + _ => (), + } } }