about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-03-29 22:25:16 +0100
committerMatthias Krüger <matthias.krueger@famsik.de>2024-04-14 11:18:23 +0200
commita5932b15074ac6c526446eb60d13a0c20e438835 (patch)
treed25997e461b28f29f0ce9098c4dd64f4242a28cd
parentdd1e35f9c021493c203b5a8d820017b574273d8f (diff)
downloadrust-a5932b15074ac6c526446eb60d13a0c20e438835.tar.gz
rust-a5932b15074ac6c526446eb60d13a0c20e438835.zip
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.
-rw-r--r--src/tools/compiletest/src/runtest.rs11
1 files 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")),
+                _ => (),
+            }
         }
     }