summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/tools/miri/Cargo.lock4
-rw-r--r--src/tools/miri/Cargo.toml2
-rw-r--r--src/tools/miri/tests/compiletest.rs73
-rw-r--r--src/tools/miri/tests/fail/alloc/deallocate-bad-alignment.rs2
-rw-r--r--src/tools/miri/tests/fail/alloc/deallocate-bad-size.rs2
-rw-r--r--src/tools/miri/tests/fail/alloc/deallocate-twice.rs2
-rw-r--r--src/tools/miri/tests/fail/alloc/global_system_mixup.rs2
-rw-r--r--src/tools/miri/tests/fail/alloc/reallocate-bad-size.rs2
-rw-r--r--src/tools/miri/tests/fail/alloc/reallocate-dangling.rs2
-rw-r--r--src/tools/miri/tests/fail/alloc/stack_free.rs2
-rw-r--r--src/tools/miri/tests/fail/concurrency/libc_pthread_create_main_terminate.rs2
-rw-r--r--src/tools/miri/tests/fail/concurrency/windows_join_detached.rs2
-rw-r--r--src/tools/miri/tests/fail/deny_lint.rs2
-rw-r--r--src/tools/miri/tests/fail/intrinsics/simd-float-to-int.rs2
-rw-r--r--src/tools/miri/tests/fail/intrinsics/simd-gather.rs2
-rw-r--r--src/tools/miri/tests/fail/intrinsics/simd-scatter.rs2
-rw-r--r--src/tools/miri/tests/fail/layout_cycle.rs2
-rw-r--r--src/tools/miri/tests/fail/memleak.rs2
-rw-r--r--src/tools/miri/tests/fail/memleak_no_backtrace.rs2
-rw-r--r--src/tools/miri/tests/fail/memleak_rc.rs2
-rw-r--r--src/tools/miri/tests/fail/no_main.rs2
-rw-r--r--src/tools/miri/tests/fail/panic/double_panic.rs2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort1.rs2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort2.rs2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort3.rs2
-rw-r--r--src/tools/miri/tests/fail/panic/panic_abort4.rs2
-rw-r--r--src/tools/miri/tests/fail/shims/fs/isolated_file.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/deallocate_against_protector1.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/drop_in_place_retag.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/illegal_dealloc1.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-1.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-2.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/newtype_pair_retagging.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/newtype_retagging.rs2
-rw-r--r--src/tools/miri/tests/fail/stacked_borrows/zst_slice.rs2
-rw-r--r--src/tools/miri/tests/fail/tokio/sleep.rs2
-rw-r--r--src/tools/miri/tests/fail/tree-borrows/strongly-protected.rs2
-rw-r--r--src/tools/miri/tests/fail/unaligned_pointers/drop_in_place.rs2
-rw-r--r--src/tools/miri/tests/fail/uninit_buffer.rs2
-rw-r--r--src/tools/miri/tests/fail/uninit_buffer_with_provenance.rs2
40 files changed, 102 insertions, 51 deletions
diff --git a/src/tools/miri/Cargo.lock b/src/tools/miri/Cargo.lock
index 4019e84f709..e2a7d484c23 100644
--- a/src/tools/miri/Cargo.lock
+++ b/src/tools/miri/Cargo.lock
@@ -820,9 +820,9 @@ dependencies = [
 
 [[package]]
 name = "ui_test"
-version = "0.6.2"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e10f5f88ce8c331a388deda1e6e2bd533c73ca89cc5f539a3df02ed35c8efba"
+checksum = "95033b0e41b8018013d99a6f1486c1ae5bd080378ced60c5f797e93842423b33"
 dependencies = [
  "bstr",
  "cargo-platform",
diff --git a/src/tools/miri/Cargo.toml b/src/tools/miri/Cargo.toml
index b962d0c1096..f6f81836804 100644
--- a/src/tools/miri/Cargo.toml
+++ b/src/tools/miri/Cargo.toml
@@ -39,7 +39,7 @@ libloading = "0.7"
 
 [dev-dependencies]
 colored = "2"
-ui_test = "0.6.2"
+ui_test = "0.9"
 rustc_version = "0.4"
 # Features chosen to match those required by env_logger, to avoid rebuilds
 regex = { version = "1.5.5", default-features = false, features = ["perf", "std"] }
diff --git a/src/tools/miri/tests/compiletest.rs b/src/tools/miri/tests/compiletest.rs
index c1365995737..6dc0071f4c2 100644
--- a/src/tools/miri/tests/compiletest.rs
+++ b/src/tools/miri/tests/compiletest.rs
@@ -2,6 +2,8 @@ use colored::*;
 use regex::bytes::Regex;
 use std::path::{Path, PathBuf};
 use std::{env, process::Command};
+use ui_test::status_emitter::StatusEmitter;
+use ui_test::CommandBuilder;
 use ui_test::{color_eyre::Result, Config, Match, Mode, OutputConflictHandling};
 
 fn miri_path() -> PathBuf {
@@ -50,33 +52,35 @@ fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> R
         stdout_filters: STDOUT.clone(),
         root_dir: PathBuf::from(path),
         mode,
-        program: miri_path(),
+        program: CommandBuilder::rustc(),
         quiet: false,
         edition: Some("2021".into()),
         ..Config::default()
     };
 
+    config.program.program = miri_path();
+
     let in_rustc_test_suite = option_env!("RUSTC_STAGE").is_some();
 
     // Add some flags we always want.
     if in_rustc_test_suite {
         // Less aggressive warnings to make the rustc toolstate management less painful.
         // (We often get warnings when e.g. a feature gets stabilized or some lint gets added/improved.)
-        config.args.push("-Astable-features".into());
-        config.args.push("-Aunused".into());
+        config.program.args.push("-Astable-features".into());
+        config.program.args.push("-Aunused".into());
     } else {
-        config.args.push("-Dwarnings".into());
-        config.args.push("-Dunused".into());
+        config.program.args.push("-Dwarnings".into());
+        config.program.args.push("-Dunused".into());
     }
     if let Ok(extra_flags) = env::var("MIRIFLAGS") {
         for flag in extra_flags.split_whitespace() {
-            config.args.push(flag.into());
+            config.program.args.push(flag.into());
         }
     }
-    config.args.push("-Zui-testing".into());
+    config.program.args.push("-Zui-testing".into());
     if let Some(target) = &config.target {
-        config.args.push("--target".into());
-        config.args.push(target.into());
+        config.program.args.push("--target".into());
+        config.program.args.push(target.into());
     }
 
     // If we're on linux, and we're testing the extern-so functionality,
@@ -86,7 +90,7 @@ fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> R
         let so_file_path = build_so_for_c_ffi_tests();
         let mut flag = std::ffi::OsString::from("-Zmiri-extern-so-file=");
         flag.push(so_file_path.into_os_string());
-        config.args.push(flag);
+        config.program.args.push(flag);
     }
 
     let skip_ui_checks = env::var_os("MIRI_SKIP_UI_CHECKS").is_some();
@@ -135,7 +139,12 @@ fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> R
             "run".into(), // There is no `cargo miri build` so we just use `cargo miri run`.
         ];
     }
-    ui_test::run_tests(config)
+    ui_test::run_tests_generic(
+        config,
+        |path| path.extension().is_some_and(|ext| ext == "rs"),
+        |_, _| None,
+        TextAndGha,
+    )
 }
 
 macro_rules! regexes {
@@ -235,3 +244,45 @@ fn main() -> Result<()> {
 
     Ok(())
 }
+
+/// This is a custom renderer for `ui_test` output that does not emit github actions
+/// `group`s, while still producing regular github actions messages on test failures.
+struct TextAndGha;
+impl StatusEmitter for TextAndGha {
+    fn failed_test<'a>(
+        &'a self,
+        revision: &'a str,
+        path: &'a Path,
+        cmd: &'a Command,
+        stderr: &'a [u8],
+    ) -> Box<dyn std::fmt::Debug + 'a> {
+        Box::new((
+            ui_test::status_emitter::Gha::<false>.failed_test(revision, path, cmd, stderr),
+            ui_test::status_emitter::Text.failed_test(revision, path, cmd, stderr),
+        ))
+    }
+
+    fn run_tests(&self, _config: &Config) -> Box<dyn ui_test::status_emitter::DuringTestRun> {
+        Box::new(TextAndGha)
+    }
+
+    fn finalize(
+        &self,
+        failures: usize,
+        succeeded: usize,
+        ignored: usize,
+        filtered: usize,
+    ) -> Box<dyn ui_test::status_emitter::Summary> {
+        Box::new((
+            ui_test::status_emitter::Gha::<false>.finalize(failures, succeeded, ignored, filtered),
+            ui_test::status_emitter::Text.finalize(failures, succeeded, ignored, filtered),
+        ))
+    }
+}
+
+impl ui_test::status_emitter::DuringTestRun for TextAndGha {
+    fn test_result(&mut self, path: &Path, revision: &str, result: &ui_test::TestResult) {
+        ui_test::status_emitter::Text.test_result(path, revision, result);
+        ui_test::status_emitter::Gha::<false>.test_result(path, revision, result);
+    }
+}
diff --git a/src/tools/miri/tests/fail/alloc/deallocate-bad-alignment.rs b/src/tools/miri/tests/fail/alloc/deallocate-bad-alignment.rs
index a07d8254ad3..e8ba824db71 100644
--- a/src/tools/miri/tests/fail/alloc/deallocate-bad-alignment.rs
+++ b/src/tools/miri/tests/fail/alloc/deallocate-bad-alignment.rs
@@ -1,6 +1,6 @@
 use std::alloc::{alloc, dealloc, Layout};
 
-//@error-pattern: has size 1 and alignment 1, but gave size 1 and alignment 2
+//@error-in-other-file: has size 1 and alignment 1, but gave size 1 and alignment 2
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/alloc/deallocate-bad-size.rs b/src/tools/miri/tests/fail/alloc/deallocate-bad-size.rs
index 47aaef1935e..e3f9a20ac3b 100644
--- a/src/tools/miri/tests/fail/alloc/deallocate-bad-size.rs
+++ b/src/tools/miri/tests/fail/alloc/deallocate-bad-size.rs
@@ -1,6 +1,6 @@
 use std::alloc::{alloc, dealloc, Layout};
 
-//@error-pattern: has size 1 and alignment 1, but gave size 2 and alignment 1
+//@error-in-other-file: has size 1 and alignment 1, but gave size 2 and alignment 1
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/alloc/deallocate-twice.rs b/src/tools/miri/tests/fail/alloc/deallocate-twice.rs
index 1eb9bbf91ca..f07bbda4a9b 100644
--- a/src/tools/miri/tests/fail/alloc/deallocate-twice.rs
+++ b/src/tools/miri/tests/fail/alloc/deallocate-twice.rs
@@ -1,6 +1,6 @@
 use std::alloc::{alloc, dealloc, Layout};
 
-//@error-pattern: dereferenced after this allocation got freed
+//@error-in-other-file: dereferenced after this allocation got freed
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/alloc/global_system_mixup.rs b/src/tools/miri/tests/fail/alloc/global_system_mixup.rs
index 47b098c71a2..2e88e5644e4 100644
--- a/src/tools/miri/tests/fail/alloc/global_system_mixup.rs
+++ b/src/tools/miri/tests/fail/alloc/global_system_mixup.rs
@@ -1,6 +1,6 @@
 // Make sure we detect when the `Global` and `System` allocators are mixed
 // (even when the default `Global` uses `System`).
-//@error-pattern: /deallocating .*, which is Rust heap memory, using .* heap deallocation operation/
+//@error-in-other-file: /deallocating .*, which is Rust heap memory, using .* heap deallocation operation/
 
 //@normalize-stderr-test: "using [A-Za-z]+ heap deallocation operation" -> "using PLATFORM heap deallocation operation"
 //@normalize-stderr-test: "\| +\^+" -> "| ^"
diff --git a/src/tools/miri/tests/fail/alloc/reallocate-bad-size.rs b/src/tools/miri/tests/fail/alloc/reallocate-bad-size.rs
index 145c3393d67..49b2c62d7e4 100644
--- a/src/tools/miri/tests/fail/alloc/reallocate-bad-size.rs
+++ b/src/tools/miri/tests/fail/alloc/reallocate-bad-size.rs
@@ -1,6 +1,6 @@
 use std::alloc::{alloc, realloc, Layout};
 
-//@error-pattern: has size 1 and alignment 1, but gave size 2 and alignment 1
+//@error-in-other-file: has size 1 and alignment 1, but gave size 2 and alignment 1
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/alloc/reallocate-dangling.rs b/src/tools/miri/tests/fail/alloc/reallocate-dangling.rs
index 34f1658344a..130e2a8301e 100644
--- a/src/tools/miri/tests/fail/alloc/reallocate-dangling.rs
+++ b/src/tools/miri/tests/fail/alloc/reallocate-dangling.rs
@@ -1,6 +1,6 @@
 use std::alloc::{alloc, dealloc, realloc, Layout};
 
-//@error-pattern: dereferenced after this allocation got freed
+//@error-in-other-file: dereferenced after this allocation got freed
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/alloc/stack_free.rs b/src/tools/miri/tests/fail/alloc/stack_free.rs
index baf53decc44..15a17a25afe 100644
--- a/src/tools/miri/tests/fail/alloc/stack_free.rs
+++ b/src/tools/miri/tests/fail/alloc/stack_free.rs
@@ -1,7 +1,7 @@
 // Validation/SB changes why we fail
 //@compile-flags: -Zmiri-disable-validation -Zmiri-disable-stacked-borrows
 
-//@error-pattern: /deallocating .*, which is stack variable memory, using Rust heap deallocation operation/
+//@error-in-other-file: /deallocating .*, which is stack variable memory, using Rust heap deallocation operation/
 
 fn main() {
     let x = 42;
diff --git a/src/tools/miri/tests/fail/concurrency/libc_pthread_create_main_terminate.rs b/src/tools/miri/tests/fail/concurrency/libc_pthread_create_main_terminate.rs
index 065ad2d725f..7e6f490bb3d 100644
--- a/src/tools/miri/tests/fail/concurrency/libc_pthread_create_main_terminate.rs
+++ b/src/tools/miri/tests/fail/concurrency/libc_pthread_create_main_terminate.rs
@@ -1,5 +1,5 @@
 //@ignore-target-windows: No libc on Windows
-//@error-pattern: the main thread terminated without waiting for all remaining threads
+//@error-in-other-file: the main thread terminated without waiting for all remaining threads
 
 // Check that we terminate the program when the main thread terminates.
 
diff --git a/src/tools/miri/tests/fail/concurrency/windows_join_detached.rs b/src/tools/miri/tests/fail/concurrency/windows_join_detached.rs
index 548ed63534d..b68a07797f8 100644
--- a/src/tools/miri/tests/fail/concurrency/windows_join_detached.rs
+++ b/src/tools/miri/tests/fail/concurrency/windows_join_detached.rs
@@ -1,5 +1,5 @@
 //@only-target-windows: Uses win32 api functions
-//@error-pattern: Undefined Behavior: trying to join a detached thread
+//@error-in-other-file: Undefined Behavior: trying to join a detached thread
 
 // Joining a detached thread is undefined behavior.
 
diff --git a/src/tools/miri/tests/fail/deny_lint.rs b/src/tools/miri/tests/fail/deny_lint.rs
index a0cb24c51bd..217d5677584 100644
--- a/src/tools/miri/tests/fail/deny_lint.rs
+++ b/src/tools/miri/tests/fail/deny_lint.rs
@@ -1,4 +1,4 @@
-//@error-pattern: miri cannot be run on programs that fail compilation
+//@error-in-other-file: miri cannot be run on programs that fail compilation
 
 #![deny(warnings)]
 
diff --git a/src/tools/miri/tests/fail/intrinsics/simd-float-to-int.rs b/src/tools/miri/tests/fail/intrinsics/simd-float-to-int.rs
index a5bae36d92a..8905d739078 100644
--- a/src/tools/miri/tests/fail/intrinsics/simd-float-to-int.rs
+++ b/src/tools/miri/tests/fail/intrinsics/simd-float-to-int.rs
@@ -1,4 +1,4 @@
-//@error-pattern: cannot be represented in target type `i32`
+//@error-in-other-file: cannot be represented in target type `i32`
 #![feature(portable_simd)]
 use std::simd::*;
 
diff --git a/src/tools/miri/tests/fail/intrinsics/simd-gather.rs b/src/tools/miri/tests/fail/intrinsics/simd-gather.rs
index e394cce9a4f..5dd9bd8a685 100644
--- a/src/tools/miri/tests/fail/intrinsics/simd-gather.rs
+++ b/src/tools/miri/tests/fail/intrinsics/simd-gather.rs
@@ -1,4 +1,4 @@
-//@error-pattern: pointer to 1 byte starting at offset 9 is out-of-bounds
+//@error-in-other-file: pointer to 1 byte starting at offset 9 is out-of-bounds
 #![feature(portable_simd)]
 use std::simd::*;
 
diff --git a/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs b/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs
index d2bc7339954..0a64478dc74 100644
--- a/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs
+++ b/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs
@@ -1,4 +1,4 @@
-//@error-pattern: pointer to 1 byte starting at offset 9 is out-of-bounds
+//@error-in-other-file: pointer to 1 byte starting at offset 9 is out-of-bounds
 #![feature(portable_simd)]
 use std::simd::*;
 
diff --git a/src/tools/miri/tests/fail/layout_cycle.rs b/src/tools/miri/tests/fail/layout_cycle.rs
index d050310bd80..3e0dd881db8 100644
--- a/src/tools/miri/tests/fail/layout_cycle.rs
+++ b/src/tools/miri/tests/fail/layout_cycle.rs
@@ -1,4 +1,4 @@
-//@error-pattern: a cycle occurred during layout computation
+//@error-in-other-file: a cycle occurred during layout computation
 //~^ ERROR: cycle detected when computing layout of
 
 use std::mem;
diff --git a/src/tools/miri/tests/fail/memleak.rs b/src/tools/miri/tests/fail/memleak.rs
index cbeb163b56c..984b44d6d40 100644
--- a/src/tools/miri/tests/fail/memleak.rs
+++ b/src/tools/miri/tests/fail/memleak.rs
@@ -1,4 +1,4 @@
-//@error-pattern: memory leaked
+//@error-in-other-file: memory leaked
 //@normalize-stderr-test: ".*│.*" -> "$$stripped$$"
 
 fn main() {
diff --git a/src/tools/miri/tests/fail/memleak_no_backtrace.rs b/src/tools/miri/tests/fail/memleak_no_backtrace.rs
index 24d4a02df71..a1f8d9957ff 100644
--- a/src/tools/miri/tests/fail/memleak_no_backtrace.rs
+++ b/src/tools/miri/tests/fail/memleak_no_backtrace.rs
@@ -1,5 +1,5 @@
 //@compile-flags: -Zmiri-disable-leak-backtraces
-//@error-pattern: the evaluated program leaked memory
+//@error-in-other-file: the evaluated program leaked memory
 //@normalize-stderr-test: ".*│.*" -> "$$stripped$$"
 
 fn main() {
diff --git a/src/tools/miri/tests/fail/memleak_rc.rs b/src/tools/miri/tests/fail/memleak_rc.rs
index cf4671912ad..0927612d08e 100644
--- a/src/tools/miri/tests/fail/memleak_rc.rs
+++ b/src/tools/miri/tests/fail/memleak_rc.rs
@@ -1,4 +1,4 @@
-//@error-pattern: memory leaked
+//@error-in-other-file: memory leaked
 //@stderr-per-bitwidth
 //@normalize-stderr-test: ".*│.*" -> "$$stripped$$"
 
diff --git a/src/tools/miri/tests/fail/no_main.rs b/src/tools/miri/tests/fail/no_main.rs
index e2820504087..01b8c7bd66b 100644
--- a/src/tools/miri/tests/fail/no_main.rs
+++ b/src/tools/miri/tests/fail/no_main.rs
@@ -1,2 +1,2 @@
-//@error-pattern: miri can only run programs that have a main function
+//@error-in-other-file: miri can only run programs that have a main function
 #![no_main]
diff --git a/src/tools/miri/tests/fail/panic/double_panic.rs b/src/tools/miri/tests/fail/panic/double_panic.rs
index c9501d90b3b..9378adb8609 100644
--- a/src/tools/miri/tests/fail/panic/double_panic.rs
+++ b/src/tools/miri/tests/fail/panic/double_panic.rs
@@ -1,4 +1,4 @@
-//@error-pattern: the program aborted
+//@error-in-other-file: the program aborted
 //@normalize-stderr-test: "\| +\^+" -> "| ^"
 //@normalize-stderr-test: "unsafe \{ libc::abort\(\) \}|crate::intrinsics::abort\(\);" -> "ABORT();"
 //@normalize-stderr-test: "\n  +[0-9]+:[^\n]+" -> "$1"
diff --git a/src/tools/miri/tests/fail/panic/panic_abort1.rs b/src/tools/miri/tests/fail/panic/panic_abort1.rs
index 00a01ce6e81..300bfa32ecb 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort1.rs
+++ b/src/tools/miri/tests/fail/panic/panic_abort1.rs
@@ -1,4 +1,4 @@
-//@error-pattern: the program aborted execution
+//@error-in-other-file: the program aborted execution
 //@normalize-stderr-test: "\| +\^+" -> "| ^"
 //@normalize-stderr-test: "libc::abort\(\);|core::intrinsics::abort\(\);" -> "ABORT();"
 //@compile-flags: -C panic=abort
diff --git a/src/tools/miri/tests/fail/panic/panic_abort2.rs b/src/tools/miri/tests/fail/panic/panic_abort2.rs
index dee0de96703..5d691350577 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort2.rs
+++ b/src/tools/miri/tests/fail/panic/panic_abort2.rs
@@ -1,4 +1,4 @@
-//@error-pattern: the program aborted execution
+//@error-in-other-file: the program aborted execution
 //@normalize-stderr-test: "\| +\^+" -> "| ^"
 //@normalize-stderr-test: "libc::abort\(\);|core::intrinsics::abort\(\);" -> "ABORT();"
 //@compile-flags: -C panic=abort
diff --git a/src/tools/miri/tests/fail/panic/panic_abort3.rs b/src/tools/miri/tests/fail/panic/panic_abort3.rs
index a448aab3ea4..25afc315628 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort3.rs
+++ b/src/tools/miri/tests/fail/panic/panic_abort3.rs
@@ -1,4 +1,4 @@
-//@error-pattern: the program aborted execution
+//@error-in-other-file: the program aborted execution
 //@normalize-stderr-test: "\| +\^+" -> "| ^"
 //@normalize-stderr-test: "libc::abort\(\);|core::intrinsics::abort\(\);" -> "ABORT();"
 //@compile-flags: -C panic=abort
diff --git a/src/tools/miri/tests/fail/panic/panic_abort4.rs b/src/tools/miri/tests/fail/panic/panic_abort4.rs
index 4995dad9d71..025b51a5cf5 100644
--- a/src/tools/miri/tests/fail/panic/panic_abort4.rs
+++ b/src/tools/miri/tests/fail/panic/panic_abort4.rs
@@ -1,4 +1,4 @@
-//@error-pattern: the program aborted execution
+//@error-in-other-file: the program aborted execution
 //@normalize-stderr-test: "\| +\^+" -> "| ^"
 //@normalize-stderr-test: "libc::abort\(\);|core::intrinsics::abort\(\);" -> "ABORT();"
 //@compile-flags: -C panic=abort
diff --git a/src/tools/miri/tests/fail/shims/fs/isolated_file.rs b/src/tools/miri/tests/fail/shims/fs/isolated_file.rs
index 9b664ffe52a..2f27e95297b 100644
--- a/src/tools/miri/tests/fail/shims/fs/isolated_file.rs
+++ b/src/tools/miri/tests/fail/shims/fs/isolated_file.rs
@@ -1,5 +1,5 @@
 //@ignore-target-windows: File handling is not implemented yet
-//@error-pattern: `open` not available when isolation is enabled
+//@error-in-other-file: `open` not available when isolation is enabled
 
 fn main() {
     let _file = std::fs::File::open("file.txt").unwrap();
diff --git a/src/tools/miri/tests/fail/stacked_borrows/deallocate_against_protector1.rs b/src/tools/miri/tests/fail/stacked_borrows/deallocate_against_protector1.rs
index 4036dce5beb..a34df7c7fe3 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/deallocate_against_protector1.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/deallocate_against_protector1.rs
@@ -1,4 +1,4 @@
-//@error-pattern: /deallocating while item \[Unique for .*\] is strongly protected/
+//@error-in-other-file: /deallocating while item \[Unique for .*\] is strongly protected/
 
 fn inner(x: &mut i32, f: fn(&mut i32)) {
     // `f` may mutate, but it may not deallocate!
diff --git a/src/tools/miri/tests/fail/stacked_borrows/drop_in_place_retag.rs b/src/tools/miri/tests/fail/stacked_borrows/drop_in_place_retag.rs
index 8180e2f03a7..9126b7e8575 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/drop_in_place_retag.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/drop_in_place_retag.rs
@@ -1,7 +1,7 @@
 //! Test that drop_in_place mutably retags the entire place, even for a type that does not need
 //! dropping, ensuring among other things that it is writeable
 
-//@error-pattern: /retag .* for Unique permission .* only grants SharedReadOnly permission/
+//@error-in-other-file: /retag .* for Unique permission .* only grants SharedReadOnly permission/
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/stacked_borrows/illegal_dealloc1.rs b/src/tools/miri/tests/fail/stacked_borrows/illegal_dealloc1.rs
index 670dd4baad8..b2ec23bda02 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/illegal_dealloc1.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/illegal_dealloc1.rs
@@ -1,4 +1,4 @@
-//@error-pattern: /deallocation .* tag does not exist in the borrow stack/
+//@error-in-other-file: /deallocation .* tag does not exist in the borrow stack/
 use std::alloc::{alloc, dealloc, Layout};
 
 fn main() {
diff --git a/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-1.rs b/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-1.rs
index 1e44cc6c800..075efe49412 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-1.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-1.rs
@@ -1,4 +1,4 @@
-//@error-pattern: pointer to 4 bytes starting at offset 0 is out-of-bounds
+//@error-in-other-file: pointer to 4 bytes starting at offset 0 is out-of-bounds
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-2.rs b/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-2.rs
index 6e90559a9ef..1b43daa9253 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-2.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/issue-miri-1050-2.rs
@@ -1,4 +1,4 @@
-//@error-pattern: is a dangling pointer
+//@error-in-other-file: is a dangling pointer
 use std::ptr::NonNull;
 
 fn main() {
diff --git a/src/tools/miri/tests/fail/stacked_borrows/newtype_pair_retagging.rs b/src/tools/miri/tests/fail/stacked_borrows/newtype_pair_retagging.rs
index c19bcb99cc1..1ae6740924c 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/newtype_pair_retagging.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/newtype_pair_retagging.rs
@@ -1,4 +1,4 @@
-//@error-pattern: which is strongly protected
+//@error-in-other-file: which is strongly protected
 struct Newtype<'a>(&'a mut i32, i32);
 
 fn dealloc_while_running(_n: Newtype<'_>, dealloc: impl FnOnce()) {
diff --git a/src/tools/miri/tests/fail/stacked_borrows/newtype_retagging.rs b/src/tools/miri/tests/fail/stacked_borrows/newtype_retagging.rs
index 2bbe7122ec7..f106274b811 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/newtype_retagging.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/newtype_retagging.rs
@@ -1,4 +1,4 @@
-//@error-pattern: which is strongly protected
+//@error-in-other-file: which is strongly protected
 struct Newtype<'a>(&'a mut i32);
 
 fn dealloc_while_running(_n: Newtype<'_>, dealloc: impl FnOnce()) {
diff --git a/src/tools/miri/tests/fail/stacked_borrows/zst_slice.rs b/src/tools/miri/tests/fail/stacked_borrows/zst_slice.rs
index 77daa9c9811..fd51fa6468a 100644
--- a/src/tools/miri/tests/fail/stacked_borrows/zst_slice.rs
+++ b/src/tools/miri/tests/fail/stacked_borrows/zst_slice.rs
@@ -1,5 +1,5 @@
 //@compile-flags: -Zmiri-strict-provenance
-//@error-pattern: /retag .* tag does not exist in the borrow stack/
+//@error-in-other-file: /retag .* tag does not exist in the borrow stack/
 
 fn main() {
     unsafe {
diff --git a/src/tools/miri/tests/fail/tokio/sleep.rs b/src/tools/miri/tests/fail/tokio/sleep.rs
index 6fdfbc9913a..d96d778e6ca 100644
--- a/src/tools/miri/tests/fail/tokio/sleep.rs
+++ b/src/tools/miri/tests/fail/tokio/sleep.rs
@@ -1,6 +1,6 @@
 //@compile-flags: -Zmiri-permissive-provenance -Zmiri-backtrace=full
 //@only-target-x86_64-unknown-linux: support for tokio only on linux and x86
-//@error-pattern: returning ready events from epoll_wait is not yet implemented
+//@error-in-other-file: returning ready events from epoll_wait is not yet implemented
 //@normalize-stderr-test: " += note:.*\n" -> ""
 
 use tokio::time::{sleep, Duration, Instant};
diff --git a/src/tools/miri/tests/fail/tree-borrows/strongly-protected.rs b/src/tools/miri/tests/fail/tree-borrows/strongly-protected.rs
index a68efea890c..484c7c3bbff 100644
--- a/src/tools/miri/tests/fail/tree-borrows/strongly-protected.rs
+++ b/src/tools/miri/tests/fail/tree-borrows/strongly-protected.rs
@@ -1,5 +1,5 @@
 //@compile-flags: -Zmiri-tree-borrows
-//@error-pattern: /deallocation through .* is forbidden/
+//@error-in-other-file: /deallocation through .* is forbidden/
 
 fn inner(x: &mut i32, f: fn(&mut i32)) {
     // `f` may mutate, but it may not deallocate!
diff --git a/src/tools/miri/tests/fail/unaligned_pointers/drop_in_place.rs b/src/tools/miri/tests/fail/unaligned_pointers/drop_in_place.rs
index 8a40e527f0e..d8cab68ac5d 100644
--- a/src/tools/miri/tests/fail/unaligned_pointers/drop_in_place.rs
+++ b/src/tools/miri/tests/fail/unaligned_pointers/drop_in_place.rs
@@ -13,7 +13,7 @@ struct PartialDrop {
     b: u8,
 }
 
-//@error-pattern: /alignment 2 is required/
+//@error-in-other-file: /alignment 2 is required/
 fn main() {
     unsafe {
         // Create an unaligned pointer
diff --git a/src/tools/miri/tests/fail/uninit_buffer.rs b/src/tools/miri/tests/fail/uninit_buffer.rs
index d21371225e5..8819c53a4f9 100644
--- a/src/tools/miri/tests/fail/uninit_buffer.rs
+++ b/src/tools/miri/tests/fail/uninit_buffer.rs
@@ -1,4 +1,4 @@
-//@error-pattern: memory is uninitialized at [0x4..0x10]
+//@error-in-other-file: memory is uninitialized at [0x4..0x10]
 
 use std::alloc::{alloc, dealloc, Layout};
 use std::slice::from_raw_parts;
diff --git a/src/tools/miri/tests/fail/uninit_buffer_with_provenance.rs b/src/tools/miri/tests/fail/uninit_buffer_with_provenance.rs
index 170bc6e1ed1..e788c079cb4 100644
--- a/src/tools/miri/tests/fail/uninit_buffer_with_provenance.rs
+++ b/src/tools/miri/tests/fail/uninit_buffer_with_provenance.rs
@@ -1,4 +1,4 @@
-//@error-pattern: memory is uninitialized at [0x4..0x8]
+//@error-in-other-file: memory is uninitialized at [0x4..0x8]
 //@normalize-stderr-test: "a[0-9]+" -> "ALLOC"
 #![feature(strict_provenance)]