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..fe70ab3f45a 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 { @@ -44,17 +46,9 @@ fn build_so_for_c_ffi_tests() -> PathBuf { } fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> Result<()> { - let mut config = Config { - target: Some(target.to_owned()), - stderr_filters: STDERR.clone(), - stdout_filters: STDOUT.clone(), - root_dir: PathBuf::from(path), - mode, - program: miri_path(), - quiet: false, - edition: Some("2021".into()), - ..Config::default() - }; + // Miri is rustc-like, so we create a default builder for rustc and modify it + let mut program = CommandBuilder::rustc(); + program.program = miri_path(); let in_rustc_test_suite = option_env!("RUSTC_STAGE").is_some(); @@ -62,22 +56,20 @@ fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> R 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()); + program.args.push("-Astable-features".into()); + program.args.push("-Aunused".into()); } else { - config.args.push("-Dwarnings".into()); - config.args.push("-Dunused".into()); + program.args.push("-Dwarnings".into()); + 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()); + program.args.push(flag.into()); } } - config.args.push("-Zui-testing".into()); - if let Some(target) = &config.target { - config.args.push("--target".into()); - config.args.push(target.into()); - } + program.args.push("-Zui-testing".into()); + program.args.push("--target".into()); + program.args.push(target.into()); // If we're on linux, and we're testing the extern-so functionality, // then build the shared object file for testing external C function calls @@ -86,18 +78,31 @@ 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); + program.args.push(flag); } let skip_ui_checks = env::var_os("MIRI_SKIP_UI_CHECKS").is_some(); - config.output_conflict_handling = match (env::var_os("MIRI_BLESS").is_some(), skip_ui_checks) { + let output_conflict_handling = match (env::var_os("MIRI_BLESS").is_some(), skip_ui_checks) { (false, false) => OutputConflictHandling::Error, (true, false) => OutputConflictHandling::Bless, (false, true) => OutputConflictHandling::Ignore, (true, true) => panic!("cannot use MIRI_BLESS and MIRI_SKIP_UI_CHECKS at the same time"), }; + let mut config = Config { + target: Some(target.to_owned()), + stderr_filters: STDERR.clone(), + stdout_filters: STDOUT.clone(), + root_dir: PathBuf::from(path), + mode, + program, + output_conflict_handling, + quiet: false, + edition: Some("2021".into()), + ..Config::default() + }; + // Handle command-line arguments. let mut after_dashdash = false; config.path_filter.extend(std::env::args().skip(1).filter(|arg| { @@ -135,7 +140,14 @@ 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, + // The files we're actually interested in (all `.rs` files). + |path| path.extension().is_some_and(|ext| ext == "rs"), + // This could be used to overwrite the `Config` on a per-test basis. + |_, _| None, + TextAndGha, + ) } macro_rules! regexes { @@ -235,3 +247,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 { + Box::new(( + ui_test::status_emitter::Gha::.failed_test(revision, path, cmd, stderr), + ui_test::status_emitter::Text.failed_test(revision, path, cmd, stderr), + )) + } + + fn run_tests(&self, _config: &Config) -> Box { + Box::new(TextAndGha) + } + + fn finalize( + &self, + failures: usize, + succeeded: usize, + ignored: usize, + filtered: usize, + ) -> Box { + Box::new(( + ui_test::status_emitter::Gha::.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::.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)]