about summary refs log tree commit diff
path: root/src/test/ui/alloc-error/default-alloc-error-hook.rs
diff options
context:
space:
mode:
authorPietro Albini <pietro.albini@ferrous-systems.com>2022-10-10 16:29:57 +0200
committerPietro Albini <pietro.albini@ferrous-systems.com>2022-10-18 09:56:32 +0200
commit77bf2b9694952dab8e7d7e8c0bfcb05ee74239c3 (patch)
treef8b8e270fece9d7330ac14404ae57225d1d954c0 /src/test/ui/alloc-error/default-alloc-error-hook.rs
parenta03ca01f4750e643a28731563e530917d314f729 (diff)
downloadrust-77bf2b9694952dab8e7d7e8c0bfcb05ee74239c3.tar.gz
rust-77bf2b9694952dab8e7d7e8c0bfcb05ee74239c3.zip
handle core dumps output in qemu user mode
In addition to the whole-system emulation/virtualization, QEMU also
supports user-mode emulation, where the emulation happens as a normal
process inside the parent system. This allows running most tests by
simply spawning remote-test-server inside user-mode emulation.

Unfortunately, QEMU always writes its own message in addition to the
system one when a core dump happens, which breaks a few tests which
match on the exact output of the system.

This PR changes those tests to strip the (possible) QEMU output before
checking if the output is expected.
Diffstat (limited to 'src/test/ui/alloc-error/default-alloc-error-hook.rs')
-rw-r--r--src/test/ui/alloc-error/default-alloc-error-hook.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/test/ui/alloc-error/default-alloc-error-hook.rs b/src/test/ui/alloc-error/default-alloc-error-hook.rs
index 100e974977c..8be09500f4e 100644
--- a/src/test/ui/alloc-error/default-alloc-error-hook.rs
+++ b/src/test/ui/alloc-error/default-alloc-error-hook.rs
@@ -15,5 +15,14 @@ fn main() {
     let me = env::current_exe().unwrap();
     let output = Command::new(&me).arg("next").output().unwrap();
     assert!(!output.status.success(), "{:?} is a success", output.status);
-    assert_eq!(str::from_utf8(&output.stderr).unwrap(), "memory allocation of 42 bytes failed\n");
+
+    let mut stderr = str::from_utf8(&output.stderr).unwrap();
+
+    // When running inside QEMU user-mode emulation, there will be an extra message printed by QEMU
+    // in the stderr whenever a core dump happens. Remove it before the check.
+    stderr = stderr
+        .strip_suffix("qemu: uncaught target signal 6 (Aborted) - core dumped\n")
+        .unwrap_or(stderr);
+
+    assert_eq!(stderr, "memory allocation of 42 bytes failed\n");
 }