mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-17 00:00:11 +02:00
tokio: enable more tests in Miri (#7734)
This commit is contained in:
@@ -18,7 +18,7 @@ env:
|
||||
rust_stable: stable
|
||||
rust_nightly: nightly-2025-10-12
|
||||
# Pin a specific miri version
|
||||
rust_miri_nightly: nightly-2025-11-09
|
||||
rust_miri_nightly: nightly-2025-11-13
|
||||
rust_clippy: '1.88'
|
||||
# When updating this, also update:
|
||||
# - README.md
|
||||
@@ -372,7 +372,7 @@ jobs:
|
||||
cargo miri nextest run --features full --lib --no-fail-fast
|
||||
working-directory: tokio
|
||||
env:
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance
|
||||
|
||||
miri-test:
|
||||
name: miri-test
|
||||
@@ -395,7 +395,7 @@ jobs:
|
||||
cargo miri nextest run --features full --test '*' --no-fail-fast
|
||||
working-directory: tokio
|
||||
env:
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance
|
||||
|
||||
miri-doc:
|
||||
name: miri-doc
|
||||
@@ -414,7 +414,7 @@ jobs:
|
||||
cargo miri test --doc --features $TOKIO_STABLE_FEATURES --no-fail-fast
|
||||
working-directory: tokio
|
||||
env:
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields
|
||||
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance
|
||||
|
||||
asan:
|
||||
name: asan
|
||||
|
||||
+1
-1
@@ -200,7 +200,7 @@ run loom tests that test unstable features.
|
||||
|
||||
You can run miri tests with
|
||||
```
|
||||
MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-retag-fields" \
|
||||
MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-strict-provenance" \
|
||||
cargo +nightly miri test --features full --lib --tests
|
||||
```
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
#[cfg_attr(miri, ignore)] // takes a really long time with miri
|
||||
fn test_splitter() {
|
||||
let data = str::repeat("█", DEFAULT_MAX_BUF_SIZE);
|
||||
let mut wr = super::SplitByUtf8BoundaryIfWindows::new(TextMockWriter);
|
||||
@@ -191,7 +191,7 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(miri, ignore)]
|
||||
#[cfg_attr(miri, ignore)] // takes a really long time with miri
|
||||
fn test_pseudo_text() {
|
||||
// In this test we write a piece of binary data, whose beginning is
|
||||
// text though. We then validate that even in this corner case buffer
|
||||
|
||||
@@ -51,6 +51,7 @@ pub(crate) mod sync {
|
||||
// internal use. Note however that some are not _currently_ named by
|
||||
// consuming code.
|
||||
|
||||
// Not using parking_lot in Miri due to <https://github.com/Amanieu/parking_lot/issues/477>.
|
||||
#[cfg(all(feature = "parking_lot", not(miri)))]
|
||||
#[allow(unused_imports)]
|
||||
pub(crate) use crate::loom::std::parking_lot::{
|
||||
|
||||
@@ -292,7 +292,7 @@ pub(crate) mod test {
|
||||
drop(signal_guard);
|
||||
}
|
||||
|
||||
#[cfg_attr(miri, ignore)] // Miri does not support epoll.
|
||||
#[cfg_attr(miri, ignore)] // No `sigaction` on Miri
|
||||
#[test]
|
||||
fn does_not_register_signal_if_queue_empty() {
|
||||
let (io_driver, io_handle) = IoDriver::new(1024).unwrap();
|
||||
|
||||
@@ -431,7 +431,6 @@ impl Runtime {
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// fn main() {
|
||||
/// # if cfg!(miri) { return } // Miri reports error when main thread terminated without waiting all remaining threads.
|
||||
/// let runtime = Runtime::new().unwrap();
|
||||
///
|
||||
/// runtime.block_on(async move {
|
||||
|
||||
@@ -77,7 +77,7 @@ cfg_not_loom! {
|
||||
mod inject;
|
||||
mod queue;
|
||||
|
||||
#[cfg(not(miri))]
|
||||
#[cfg(not(miri))] // takes a really long time with miri
|
||||
mod task_combinations;
|
||||
|
||||
#[cfg(miri)]
|
||||
|
||||
@@ -479,8 +479,6 @@ async fn multiple_waiters() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
// Block on https://github.com/rust-lang/miri/issues/4374
|
||||
#[cfg_attr(miri, ignore)]
|
||||
async fn poll_fns() {
|
||||
let (a, b) = socketpair();
|
||||
let afd_a = Arc::new(AsyncFd::new(a).unwrap());
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// This tests test the behavior of `process::Command::spawn` when it is used
|
||||
// outside runtime, and when `process::Child::wait ` is used in a different
|
||||
// runtime from which `process::Command::spawn` is used.
|
||||
#![cfg(all(unix, not(target_os = "freebsd"), not(miri)))]
|
||||
#![cfg(all(unix, not(target_os = "freebsd"), not(miri)))] // Miri cannot run system commands
|
||||
|
||||
use std::process::Stdio;
|
||||
use tokio::{process::Command, runtime::Runtime};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi cannot run system commands
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi/Miri cannot run system commands
|
||||
|
||||
use tokio::process::Command;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi cannot run system commands
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi"), not(miri)))] // Wasi/Miri cannot run system commands
|
||||
|
||||
use tokio::process::Command;
|
||||
use tokio_test::assert_ok;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(not(miri))] // Possible bug on Miri.
|
||||
|
||||
use tokio::runtime::Runtime;
|
||||
use tokio::sync::oneshot;
|
||||
|
||||
Reference in New Issue
Block a user