mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-09-25 12:00:35 +00:00
tokio: bump MSRV to 1.63 (#5887)
This commit is contained in:
parent
a58beb3aca
commit
c445e467ce
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -25,7 +25,7 @@ env:
|
||||
# - tokio-util/Cargo.toml
|
||||
# - tokio-test/Cargo.toml
|
||||
# - tokio-stream/Cargo.toml
|
||||
rust_min: 1.56.0
|
||||
rust_min: 1.63.0
|
||||
|
||||
defaults:
|
||||
run:
|
||||
|
@ -187,12 +187,13 @@ When updating this, also update:
|
||||
|
||||
Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at
|
||||
least** 6 months. When increasing the MSRV, the new Rust version must have been
|
||||
released at least six months ago. The current MSRV is 1.56.0.
|
||||
released at least six months ago. The current MSRV is 1.63.
|
||||
|
||||
Note that the MSRV is not increased automatically, and only as part of a minor
|
||||
release. The MSRV history for past minor releases can be found below:
|
||||
|
||||
* 1.27 to now - Rust 1.56
|
||||
* 1.30 to now - Rust 1.63
|
||||
* 1.27 to 1.29 - Rust 1.56
|
||||
* 1.17 to 1.26 - Rust 1.49
|
||||
* 1.15 to 1.16 - Rust 1.46
|
||||
* 1.0 to 1.14 - Rust 1.45
|
||||
|
@ -8,7 +8,7 @@ name = "tokio"
|
||||
# - Create "v1.x.y" git tag.
|
||||
version = "1.29.1"
|
||||
edition = "2021"
|
||||
rust-version = "1.56"
|
||||
rust-version = "1.63"
|
||||
authors = ["Tokio Contributors <team@tokio.rs>"]
|
||||
license = "MIT"
|
||||
readme = "README.md"
|
||||
@ -93,9 +93,6 @@ time = []
|
||||
# a few releases.
|
||||
stats = []
|
||||
|
||||
[build-dependencies]
|
||||
autocfg = "1.1"
|
||||
|
||||
[dependencies]
|
||||
tokio-macros = { version = "~2.1.0", path = "../tokio-macros", optional = true }
|
||||
|
||||
@ -107,8 +104,8 @@ mio = { version = "0.8.6", optional = true, default-features = false }
|
||||
num_cpus = { version = "1.8.0", optional = true }
|
||||
parking_lot = { version = "0.12.0", optional = true }
|
||||
|
||||
[target.'cfg(not(any(target_arch = "wasm32", target_arch = "wasm64")))'.dependencies]
|
||||
socket2 = { version = "0.4.9", optional = true, features = [ "all" ] }
|
||||
[target.'cfg(not(target_family = "wasm"))'.dependencies]
|
||||
socket2 = { version = "0.5.3", optional = true, features = [ "all" ] }
|
||||
|
||||
# Currently unstable. The API exposed by these features may be broken at any time.
|
||||
# Requires `--cfg tokio_unstable` to enable.
|
||||
@ -146,14 +143,14 @@ futures = { version = "0.3.0", features = ["async-await"] }
|
||||
mockall = "0.11.1"
|
||||
async-stream = "0.3"
|
||||
|
||||
[target.'cfg(not(any(target_arch = "wasm32", target_arch = "wasm64")))'.dev-dependencies]
|
||||
socket2 = "0.4.9"
|
||||
[target.'cfg(not(target_family = "wasm"))'.dev-dependencies]
|
||||
socket2 = "0.5.3"
|
||||
tempfile = "3.1.0"
|
||||
|
||||
[target.'cfg(not(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")))'.dev-dependencies]
|
||||
[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dev-dependencies]
|
||||
rand = "0.8.0"
|
||||
|
||||
[target.'cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), not(target_os = "wasi")))'.dev-dependencies]
|
||||
[target.'cfg(all(target_family = "wasm", not(target_os = "wasi")))'.dev-dependencies]
|
||||
wasm-bindgen-test = "0.3.0"
|
||||
|
||||
[target.'cfg(target_os = "freebsd")'.dev-dependencies]
|
||||
|
@ -187,12 +187,13 @@ When updating this, also update:
|
||||
|
||||
Tokio will keep a rolling MSRV (minimum supported rust version) policy of **at
|
||||
least** 6 months. When increasing the MSRV, the new Rust version must have been
|
||||
released at least six months ago. The current MSRV is 1.56.0.
|
||||
released at least six months ago. The current MSRV is 1.63.
|
||||
|
||||
Note that the MSRV is not increased automatically, and only as part of a minor
|
||||
release. The MSRV history for past minor releases can be found below:
|
||||
|
||||
* 1.27 to now - Rust 1.56
|
||||
* 1.30 to now - Rust 1.63
|
||||
* 1.27 to 1.29 - Rust 1.56
|
||||
* 1.17 to 1.26 - Rust 1.49
|
||||
* 1.15 to 1.16 - Rust 1.46
|
||||
* 1.0 to 1.14 - Rust 1.45
|
||||
|
192
tokio/build.rs
192
tokio/build.rs
@ -1,192 +0,0 @@
|
||||
use autocfg::AutoCfg;
|
||||
|
||||
const CONST_THREAD_LOCAL_PROBE: &str = r#"
|
||||
{
|
||||
thread_local! {
|
||||
static MY_PROBE: usize = const { 10 };
|
||||
}
|
||||
|
||||
MY_PROBE.with(|val| *val)
|
||||
}
|
||||
"#;
|
||||
|
||||
const CONST_MUTEX_NEW_PROBE: &str = r#"
|
||||
{
|
||||
static MY_MUTEX: ::std::sync::Mutex<i32> = ::std::sync::Mutex::new(1);
|
||||
*MY_MUTEX.lock().unwrap()
|
||||
}
|
||||
"#;
|
||||
|
||||
const AS_FD_PROBE: &str = r#"
|
||||
{
|
||||
#[allow(unused_imports)]
|
||||
#[cfg(unix)]
|
||||
use std::os::unix::prelude::AsFd as _;
|
||||
#[allow(unused_imports)]
|
||||
#[cfg(windows)]
|
||||
use std::os::windows::prelude::AsSocket as _;
|
||||
#[allow(unused_imports)]
|
||||
#[cfg(target_os = "wasi")]
|
||||
use std::os::wasi::prelude::AsFd as _;
|
||||
}
|
||||
"#;
|
||||
|
||||
const TARGET_HAS_ATOMIC_PROBE: &str = r#"
|
||||
{
|
||||
#[cfg(target_has_atomic = "ptr")]
|
||||
let _ = ();
|
||||
}
|
||||
"#;
|
||||
|
||||
const TARGET_ATOMIC_U64_PROBE: &str = r#"
|
||||
{
|
||||
#[allow(unused_imports)]
|
||||
use std::sync::atomic::AtomicU64 as _;
|
||||
}
|
||||
"#;
|
||||
|
||||
fn main() {
|
||||
let mut enable_const_thread_local = false;
|
||||
let mut enable_target_has_atomic = false;
|
||||
let mut enable_const_mutex_new = false;
|
||||
let mut enable_as_fd = false;
|
||||
let mut target_needs_atomic_u64_fallback = false;
|
||||
|
||||
match AutoCfg::new() {
|
||||
Ok(ac) => {
|
||||
// These checks prefer to call only `probe_rustc_version` if that is
|
||||
// enough to determine whether the feature is supported. This is
|
||||
// because the `probe_expression` call involves a call to rustc,
|
||||
// which the `probe_rustc_version` call avoids.
|
||||
|
||||
// Const-initialized thread locals were stabilized in 1.59.
|
||||
if ac.probe_rustc_version(1, 60) {
|
||||
enable_const_thread_local = true;
|
||||
} else if ac.probe_rustc_version(1, 59) {
|
||||
// This compiler claims to be 1.59, but there are some nightly
|
||||
// compilers that claim to be 1.59 without supporting the
|
||||
// feature. Explicitly probe to check if code using them
|
||||
// compiles.
|
||||
//
|
||||
// The oldest nightly that supports the feature is 2021-12-06.
|
||||
if ac.probe_expression(CONST_THREAD_LOCAL_PROBE) {
|
||||
enable_const_thread_local = true;
|
||||
}
|
||||
}
|
||||
|
||||
// The `target_has_atomic` cfg was stabilized in 1.60.
|
||||
if ac.probe_rustc_version(1, 61) {
|
||||
enable_target_has_atomic = true;
|
||||
} else if ac.probe_rustc_version(1, 60) {
|
||||
// This compiler claims to be 1.60, but there are some nightly
|
||||
// compilers that claim to be 1.60 without supporting the
|
||||
// feature. Explicitly probe to check if code using them
|
||||
// compiles.
|
||||
//
|
||||
// The oldest nightly that supports the feature is 2022-02-11.
|
||||
if ac.probe_expression(TARGET_HAS_ATOMIC_PROBE) {
|
||||
enable_target_has_atomic = true;
|
||||
}
|
||||
}
|
||||
|
||||
// If we can't tell using `target_has_atomic`, tell if the target
|
||||
// has `AtomicU64` by trying to use it.
|
||||
if !enable_target_has_atomic && !ac.probe_expression(TARGET_ATOMIC_U64_PROBE) {
|
||||
target_needs_atomic_u64_fallback = true;
|
||||
}
|
||||
|
||||
// The `Mutex::new` method was made const in 1.63.
|
||||
if ac.probe_rustc_version(1, 64) {
|
||||
enable_const_mutex_new = true;
|
||||
} else if ac.probe_rustc_version(1, 63) {
|
||||
// This compiler claims to be 1.63, but there are some nightly
|
||||
// compilers that claim to be 1.63 without supporting the
|
||||
// feature. Explicitly probe to check if code using them
|
||||
// compiles.
|
||||
//
|
||||
// The oldest nightly that supports the feature is 2022-06-20.
|
||||
if ac.probe_expression(CONST_MUTEX_NEW_PROBE) {
|
||||
enable_const_mutex_new = true;
|
||||
}
|
||||
}
|
||||
|
||||
// The `AsFd` family of traits were made stable in 1.63.
|
||||
if ac.probe_rustc_version(1, 64) {
|
||||
enable_as_fd = true;
|
||||
} else if ac.probe_rustc_version(1, 63) {
|
||||
// This compiler claims to be 1.63, but there are some nightly
|
||||
// compilers that claim to be 1.63 without supporting the
|
||||
// feature. Explicitly probe to check if code using them
|
||||
// compiles.
|
||||
//
|
||||
// The oldest nightly that supports the feature is 2022-06-16.
|
||||
if ac.probe_expression(AS_FD_PROBE) {
|
||||
enable_as_fd = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Err(e) => {
|
||||
// If we couldn't detect the compiler version and features, just
|
||||
// print a warning. This isn't a fatal error: we can still build
|
||||
// Tokio, we just can't enable cfgs automatically.
|
||||
println!(
|
||||
"cargo:warning=tokio: failed to detect compiler features: {}",
|
||||
e
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if !enable_const_thread_local {
|
||||
// To disable this feature on compilers that support it, you can
|
||||
// explicitly pass this flag with the following environment variable:
|
||||
//
|
||||
// RUSTFLAGS="--cfg tokio_no_const_thread_local"
|
||||
autocfg::emit("tokio_no_const_thread_local")
|
||||
}
|
||||
|
||||
if !enable_target_has_atomic {
|
||||
// To disable this feature on compilers that support it, you can
|
||||
// explicitly pass this flag with the following environment variable:
|
||||
//
|
||||
// RUSTFLAGS="--cfg tokio_no_target_has_atomic"
|
||||
autocfg::emit("tokio_no_target_has_atomic")
|
||||
}
|
||||
|
||||
if !enable_const_mutex_new {
|
||||
// To disable this feature on compilers that support it, you can
|
||||
// explicitly pass this flag with the following environment variable:
|
||||
//
|
||||
// RUSTFLAGS="--cfg tokio_no_const_mutex_new"
|
||||
autocfg::emit("tokio_no_const_mutex_new")
|
||||
}
|
||||
|
||||
if !enable_as_fd {
|
||||
// To disable this feature on compilers that support it, you can
|
||||
// explicitly pass this flag with the following environment variable:
|
||||
//
|
||||
// RUSTFLAGS="--cfg tokio_no_as_fd"
|
||||
autocfg::emit("tokio_no_as_fd");
|
||||
}
|
||||
|
||||
if target_needs_atomic_u64_fallback {
|
||||
// To disable this feature on compilers that support it, you can
|
||||
// explicitly pass this flag with the following environment variable:
|
||||
//
|
||||
// RUSTFLAGS="--cfg tokio_no_atomic_u64"
|
||||
autocfg::emit("tokio_no_atomic_u64")
|
||||
}
|
||||
|
||||
let target = ::std::env::var("TARGET").unwrap_or_default();
|
||||
|
||||
// We emit cfgs instead of using `target_family = "wasm"` that requires Rust 1.54.
|
||||
// Note that these cfgs are unavailable in `Cargo.toml`.
|
||||
if target.starts_with("wasm") {
|
||||
autocfg::emit("tokio_wasm");
|
||||
if target.contains("wasi") {
|
||||
autocfg::emit("tokio_wasi");
|
||||
} else {
|
||||
autocfg::emit("tokio_wasm_not_wasi");
|
||||
}
|
||||
}
|
||||
}
|
@ -223,11 +223,11 @@ cfg_io_driver_impl! {
|
||||
pub use ready::Ready;
|
||||
}
|
||||
|
||||
#[cfg_attr(tokio_wasi, allow(unused_imports))]
|
||||
#[cfg_attr(target_os = "wasi", allow(unused_imports))]
|
||||
mod poll_evented;
|
||||
|
||||
#[cfg(not(loom))]
|
||||
#[cfg_attr(tokio_wasi, allow(unused_imports))]
|
||||
#[cfg_attr(target_os = "wasi", allow(unused_imports))]
|
||||
pub(crate) use poll_evented::PollEvented;
|
||||
}
|
||||
|
||||
|
@ -456,26 +456,9 @@ compile_error! {
|
||||
"Tokio requires the platform pointer width to be 32, 64, or 128 bits"
|
||||
}
|
||||
|
||||
// Ensure that our build script has correctly set cfg flags for wasm.
|
||||
//
|
||||
// Each condition is written all(a, not(b)). This should be read as
|
||||
// "if a, then we must also have b".
|
||||
#[cfg(any(
|
||||
all(target_arch = "wasm32", not(tokio_wasm)),
|
||||
all(target_arch = "wasm64", not(tokio_wasm)),
|
||||
all(target_family = "wasm", not(tokio_wasm)),
|
||||
all(target_os = "wasi", not(tokio_wasm)),
|
||||
all(target_os = "wasi", not(tokio_wasi)),
|
||||
all(target_os = "wasi", tokio_wasm_not_wasi),
|
||||
all(tokio_wasm, not(any(target_arch = "wasm32", target_arch = "wasm64"))),
|
||||
all(tokio_wasm_not_wasi, not(tokio_wasm)),
|
||||
all(tokio_wasi, not(tokio_wasm))
|
||||
))]
|
||||
compile_error!("Tokio's build script has incorrectly detected wasm.");
|
||||
|
||||
#[cfg(all(
|
||||
not(tokio_unstable),
|
||||
tokio_wasm,
|
||||
target_family = "wasm",
|
||||
any(
|
||||
feature = "fs",
|
||||
feature = "io-std",
|
||||
|
@ -85,7 +85,7 @@ macro_rules! cfg_fs {
|
||||
($($item:item)*) => {
|
||||
$(
|
||||
#[cfg(feature = "fs")]
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "fs")))]
|
||||
$item
|
||||
)*
|
||||
@ -276,7 +276,7 @@ macro_rules! cfg_process {
|
||||
#[cfg(feature = "process")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "process")))]
|
||||
#[cfg(not(loom))]
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
$item
|
||||
)*
|
||||
}
|
||||
@ -305,7 +305,7 @@ macro_rules! cfg_signal {
|
||||
#[cfg(feature = "signal")]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "signal")))]
|
||||
#[cfg(not(loom))]
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
$item
|
||||
)*
|
||||
}
|
||||
@ -372,7 +372,7 @@ macro_rules! cfg_not_rt {
|
||||
macro_rules! cfg_rt_multi_thread {
|
||||
($($item:item)*) => {
|
||||
$(
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
#[cfg_attr(docsrs, doc(cfg(feature = "rt-multi-thread")))]
|
||||
$item
|
||||
)*
|
||||
@ -585,7 +585,7 @@ macro_rules! cfg_not_has_const_mutex_new {
|
||||
macro_rules! cfg_not_wasi {
|
||||
($($item:item)*) => {
|
||||
$(
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
$item
|
||||
)*
|
||||
}
|
||||
@ -594,7 +594,7 @@ macro_rules! cfg_not_wasi {
|
||||
macro_rules! cfg_is_wasm_not_wasi {
|
||||
($($item:item)*) => {
|
||||
$(
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
$item
|
||||
)*
|
||||
}
|
||||
|
@ -281,7 +281,7 @@ impl TcpListener {
|
||||
.map(|raw_socket| unsafe { std::net::TcpListener::from_raw_socket(raw_socket) })
|
||||
}
|
||||
|
||||
#[cfg(tokio_wasi)]
|
||||
#[cfg(target_os = "wasi")]
|
||||
{
|
||||
use std::os::wasi::io::{FromRawFd, IntoRawFd};
|
||||
self.io
|
||||
@ -416,7 +416,7 @@ mod sys {
|
||||
}
|
||||
|
||||
cfg_unstable! {
|
||||
#[cfg(tokio_wasi)]
|
||||
#[cfg(target_os = "wasi")]
|
||||
mod sys {
|
||||
use super::TcpListener;
|
||||
use std::os::wasi::prelude::*;
|
||||
|
@ -457,7 +457,7 @@ impl TcpSocket {
|
||||
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||
///
|
||||
/// [`set_tos`]: Self::set_tos
|
||||
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||
// https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1464
|
||||
#[cfg(not(any(
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
@ -484,7 +484,7 @@ impl TcpSocket {
|
||||
///
|
||||
/// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or
|
||||
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||
// https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1446
|
||||
#[cfg(not(any(
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
|
@ -258,7 +258,7 @@ impl TcpStream {
|
||||
.map(|raw_socket| unsafe { std::net::TcpStream::from_raw_socket(raw_socket) })
|
||||
}
|
||||
|
||||
#[cfg(tokio_wasi)]
|
||||
#[cfg(target_os = "wasi")]
|
||||
{
|
||||
use std::os::wasi::io::{FromRawFd, IntoRawFd};
|
||||
self.io
|
||||
@ -1405,7 +1405,7 @@ cfg_windows! {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(tokio_unstable, tokio_wasi))]
|
||||
#[cfg(all(tokio_unstable, target_os = "wasi"))]
|
||||
mod sys {
|
||||
use super::TcpStream;
|
||||
use std::os::wasi::prelude::*;
|
||||
|
@ -1855,7 +1855,7 @@ impl UdpSocket {
|
||||
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||
///
|
||||
/// [`set_tos`]: Self::set_tos
|
||||
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||
// https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1464
|
||||
#[cfg(not(any(
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
@ -1882,7 +1882,7 @@ impl UdpSocket {
|
||||
///
|
||||
/// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or
|
||||
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||
// https://docs.rs/socket2/0.5.3/src/socket2/socket.rs.html#1446
|
||||
#[cfg(not(any(
|
||||
target_os = "fuchsia",
|
||||
target_os = "redox",
|
||||
|
@ -173,7 +173,7 @@ const KEEP_ALIVE: Duration = Duration::from_secs(10);
|
||||
/// Tasks will be scheduled as non-mandatory, meaning they may not get executed
|
||||
/// in case of runtime shutdown.
|
||||
#[track_caller]
|
||||
#[cfg_attr(tokio_wasi, allow(dead_code))]
|
||||
#[cfg_attr(target_os = "wasi", allow(dead_code))]
|
||||
pub(crate) fn spawn_blocking<F, R>(func: F) -> JoinHandle<R>
|
||||
where
|
||||
F: FnOnce() -> R + Send + 'static,
|
||||
|
@ -23,9 +23,9 @@ impl BlockingSchedule {
|
||||
scheduler::Handle::CurrentThread(handle) => {
|
||||
handle.driver.clock.inhibit_auto_advance();
|
||||
}
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThread(_) => {}
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThreadAlt(_) => {}
|
||||
}
|
||||
}
|
||||
@ -45,9 +45,9 @@ impl task::Schedule for BlockingSchedule {
|
||||
handle.driver.clock.allow_auto_advance();
|
||||
handle.driver.unpark();
|
||||
}
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThread(_) => {}
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThreadAlt(_) => {}
|
||||
}
|
||||
}
|
||||
|
@ -197,9 +197,9 @@ pub(crate) type ThreadNameFn = std::sync::Arc<dyn Fn() -> String + Send + Sync +
|
||||
#[derive(Clone, Copy)]
|
||||
pub(crate) enum Kind {
|
||||
CurrentThread,
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThread,
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThreadAlt,
|
||||
}
|
||||
|
||||
@ -676,9 +676,9 @@ impl Builder {
|
||||
pub fn build(&mut self) -> io::Result<Runtime> {
|
||||
match &self.kind {
|
||||
Kind::CurrentThread => self.build_current_thread_runtime(),
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Kind::MultiThread => self.build_threaded_runtime(),
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Kind::MultiThreadAlt => self.build_alt_threaded_runtime(),
|
||||
}
|
||||
}
|
||||
@ -687,9 +687,9 @@ impl Builder {
|
||||
driver::Cfg {
|
||||
enable_pause_time: match self.kind {
|
||||
Kind::CurrentThread => true,
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Kind::MultiThread => false,
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Kind::MultiThreadAlt => false,
|
||||
},
|
||||
enable_io: self.enable_io,
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg_attr(any(not(feature = "full"), tokio_wasm), allow(dead_code))]
|
||||
#![cfg_attr(any(not(feature = "full"), target_family = "wasm"), allow(dead_code))]
|
||||
use crate::runtime::Callback;
|
||||
use crate::util::RngSeedGenerator;
|
||||
|
||||
|
@ -246,7 +246,7 @@ cfg_coop! {
|
||||
mod test {
|
||||
use super::*;
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
fn get() -> Budget {
|
||||
|
@ -355,9 +355,9 @@ impl Handle {
|
||||
pub fn runtime_flavor(&self) -> RuntimeFlavor {
|
||||
match self.inner {
|
||||
scheduler::Handle::CurrentThread(_) => RuntimeFlavor::CurrentThread,
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThread(_) => RuntimeFlavor::MultiThread,
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThreadAlt(_) => RuntimeFlavor::MultiThreadAlt,
|
||||
}
|
||||
}
|
||||
@ -385,9 +385,9 @@ impl Handle {
|
||||
pub fn id(&self) -> runtime::Id {
|
||||
let owned_id = match &self.inner {
|
||||
scheduler::Handle::CurrentThread(handle) => handle.owned_id(),
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThread(handle) => handle.owned_id(),
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThreadAlt(handle) => handle.owned_id(),
|
||||
};
|
||||
owned_id.into()
|
||||
@ -529,7 +529,7 @@ cfg_taskdump! {
|
||||
pub async fn dump(&self) -> crate::runtime::Dump {
|
||||
match &self.inner {
|
||||
scheduler::Handle::CurrentThread(handle) => handle.dump(),
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThread(handle) => {
|
||||
// perform the trace in a separate thread so that the
|
||||
// trace itself does not appear in the taskdump.
|
||||
@ -539,7 +539,7 @@ cfg_taskdump! {
|
||||
handle.dump().await
|
||||
}).await
|
||||
},
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Handle::MultiThreadAlt(_) => panic!("task dump not implemented for this runtime flavor"),
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ pub(crate) struct Handle {
|
||||
|
||||
/// Used to wake up the reactor from a call to `turn`.
|
||||
/// Not supported on Wasi due to lack of threading support.
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
waker: mio::Waker,
|
||||
|
||||
pub(crate) metrics: IoDriverMetrics,
|
||||
@ -97,7 +97,7 @@ impl Driver {
|
||||
/// creation.
|
||||
pub(crate) fn new(nevents: usize) -> io::Result<(Driver, Handle)> {
|
||||
let poll = mio::Poll::new()?;
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
let waker = mio::Waker::new(poll.registry(), TOKEN_WAKEUP)?;
|
||||
let registry = poll.registry().try_clone()?;
|
||||
|
||||
@ -114,7 +114,7 @@ impl Driver {
|
||||
registry,
|
||||
registrations,
|
||||
synced: Mutex::new(synced),
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
waker,
|
||||
metrics: IoDriverMetrics::default(),
|
||||
};
|
||||
@ -156,7 +156,7 @@ impl Driver {
|
||||
match self.poll.poll(events, max_wait) {
|
||||
Ok(_) => {}
|
||||
Err(ref e) if e.kind() == io::ErrorKind::Interrupted => {}
|
||||
#[cfg(tokio_wasi)]
|
||||
#[cfg(target_os = "wasi")]
|
||||
Err(e) if e.kind() == io::ErrorKind::InvalidInput => {
|
||||
// In case of wasm32_wasi this error happens, when trying to poll without subscriptions
|
||||
// just return from the park, as there would be nothing, which wakes us up.
|
||||
@ -212,7 +212,7 @@ impl Handle {
|
||||
/// blocked in `turn`, then the next call to `turn` will not block and
|
||||
/// return immediately.
|
||||
pub(crate) fn unpark(&self) {
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
self.waker.wake().expect("failed to wake I/O driver");
|
||||
}
|
||||
|
||||
|
@ -118,7 +118,7 @@ impl Registration {
|
||||
|
||||
// Uses the poll path, requiring the caller to ensure mutual exclusion for
|
||||
// correctness. Only the last task to call this function is notified.
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
pub(crate) fn poll_read_io<R>(
|
||||
&self,
|
||||
cx: &mut Context<'_>,
|
||||
|
@ -175,7 +175,7 @@
|
||||
|
||||
// At the top due to macros
|
||||
#[cfg(test)]
|
||||
#[cfg(not(tokio_wasm))]
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
#[macro_use]
|
||||
mod tests;
|
||||
|
||||
@ -212,7 +212,7 @@ cfg_rt! {
|
||||
use config::Config;
|
||||
|
||||
mod blocking;
|
||||
#[cfg_attr(tokio_wasi, allow(unused_imports))]
|
||||
#[cfg_attr(target_os = "wasi", allow(unused_imports))]
|
||||
pub(crate) use blocking::spawn_blocking;
|
||||
|
||||
cfg_trace! {
|
||||
|
@ -67,9 +67,9 @@ impl ParkThread {
|
||||
CURRENT_THREAD_PARK_COUNT.with(|count| count.fetch_add(1, SeqCst));
|
||||
|
||||
// Wasm doesn't have threads, so just sleep.
|
||||
#[cfg(not(tokio_wasm))]
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
self.inner.park_timeout(duration);
|
||||
#[cfg(tokio_wasm)]
|
||||
#[cfg(target_family = "wasm")]
|
||||
std::thread::sleep(duration);
|
||||
}
|
||||
|
||||
|
@ -125,11 +125,11 @@ pub(super) enum Scheduler {
|
||||
CurrentThread(CurrentThread),
|
||||
|
||||
/// Execute tasks across multiple threads.
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThread(MultiThread),
|
||||
|
||||
/// Execute tasks across multiple threads.
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThreadAlt(MultiThreadAlt),
|
||||
}
|
||||
|
||||
@ -345,9 +345,9 @@ impl Runtime {
|
||||
|
||||
match &self.scheduler {
|
||||
Scheduler::CurrentThread(exec) => exec.block_on(&self.handle.inner, future),
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Scheduler::MultiThread(exec) => exec.block_on(&self.handle.inner, future),
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Scheduler::MultiThreadAlt(exec) => exec.block_on(&self.handle.inner, future),
|
||||
}
|
||||
}
|
||||
@ -463,13 +463,13 @@ impl Drop for Runtime {
|
||||
let _guard = context::try_set_current(&self.handle.inner);
|
||||
current_thread.shutdown(&self.handle.inner);
|
||||
}
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Scheduler::MultiThread(multi_thread) => {
|
||||
// The threaded scheduler drops its tasks on its worker threads, which is
|
||||
// already in the runtime's context.
|
||||
multi_thread.shutdown(&self.handle.inner);
|
||||
}
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Scheduler::MultiThreadAlt(multi_thread) => {
|
||||
// The threaded scheduler drops its tasks on its worker threads, which is
|
||||
// already in the runtime's context.
|
||||
|
@ -38,7 +38,10 @@ impl<T: 'static> Shared<T> {
|
||||
}
|
||||
|
||||
// Kind of annoying to have to include the cfg here
|
||||
#[cfg(any(tokio_taskdump, all(feature = "rt-multi-thread", not(tokio_wasi))))]
|
||||
#[cfg(any(
|
||||
tokio_taskdump,
|
||||
all(feature = "rt-multi-thread", not(target_os = "wasi"))
|
||||
))]
|
||||
pub(crate) fn is_closed(&self, synced: &Synced) -> bool {
|
||||
synced.is_closed
|
||||
}
|
||||
|
@ -32,10 +32,10 @@ pub(crate) enum Handle {
|
||||
#[cfg(feature = "rt")]
|
||||
CurrentThread(Arc<current_thread::Handle>),
|
||||
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThread(Arc<multi_thread::Handle>),
|
||||
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThreadAlt(Arc<multi_thread_alt::Handle>),
|
||||
|
||||
// TODO: This is to avoid triggering "dead code" warnings many other places
|
||||
@ -49,10 +49,10 @@ pub(crate) enum Handle {
|
||||
pub(super) enum Context {
|
||||
CurrentThread(current_thread::Context),
|
||||
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThread(multi_thread::Context),
|
||||
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
MultiThreadAlt(multi_thread_alt::Context),
|
||||
}
|
||||
|
||||
@ -63,10 +63,10 @@ impl Handle {
|
||||
#[cfg(feature = "rt")]
|
||||
Handle::CurrentThread(ref h) => &h.driver,
|
||||
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThread(ref h) => &h.driver,
|
||||
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThreadAlt(ref h) => &h.driver,
|
||||
|
||||
#[cfg(not(feature = "rt"))]
|
||||
@ -89,10 +89,10 @@ cfg_rt! {
|
||||
match $self {
|
||||
$ty::CurrentThread($h) => $e,
|
||||
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
$ty::MultiThread($h) => $e,
|
||||
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
$ty::MultiThreadAlt($h) => $e,
|
||||
}
|
||||
}
|
||||
@ -119,10 +119,10 @@ cfg_rt! {
|
||||
match self {
|
||||
Handle::CurrentThread(h) => current_thread::Handle::spawn(h, future, id),
|
||||
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThread(h) => multi_thread::Handle::spawn(h, future, id),
|
||||
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThreadAlt(h) => multi_thread_alt::Handle::spawn(h, future, id),
|
||||
}
|
||||
}
|
||||
@ -131,10 +131,10 @@ cfg_rt! {
|
||||
match *self {
|
||||
Handle::CurrentThread(_) => {},
|
||||
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThread(ref h) => h.shutdown(),
|
||||
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThreadAlt(ref h) => h.shutdown(),
|
||||
}
|
||||
}
|
||||
@ -146,7 +146,7 @@ cfg_rt! {
|
||||
pub(crate) fn as_current_thread(&self) -> &Arc<current_thread::Handle> {
|
||||
match self {
|
||||
Handle::CurrentThread(handle) => handle,
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
_ => panic!("not a CurrentThread handle"),
|
||||
}
|
||||
}
|
||||
@ -170,9 +170,9 @@ cfg_rt! {
|
||||
pub(crate) fn num_workers(&self) -> usize {
|
||||
match self {
|
||||
Handle::CurrentThread(_) => 1,
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThread(handle) => handle.num_workers(),
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
Handle::MultiThreadAlt(handle) => handle.num_workers(),
|
||||
}
|
||||
}
|
||||
@ -216,7 +216,7 @@ cfg_rt! {
|
||||
pub(crate) fn expect_current_thread(&self) -> ¤t_thread::Context {
|
||||
match self {
|
||||
Context::CurrentThread(context) => context,
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
_ => panic!("expected `CurrentThread::Context`")
|
||||
}
|
||||
}
|
||||
|
@ -404,7 +404,7 @@ impl<S: Schedule> LocalNotified<S> {
|
||||
impl<S: Schedule> UnownedTask<S> {
|
||||
// Used in test of the inject queue.
|
||||
#[cfg(test)]
|
||||
#[cfg_attr(tokio_wasm, allow(dead_code))]
|
||||
#[cfg_attr(target_family = "wasm", allow(dead_code))]
|
||||
pub(super) fn into_notified(self) -> Notified<S> {
|
||||
Notified(self.into_task())
|
||||
}
|
||||
|
@ -184,9 +184,13 @@ pub(crate) fn trace_leaf(cx: &mut task::Context<'_>) -> Poll<()> {
|
||||
if let Some(scheduler) = scheduler {
|
||||
match scheduler {
|
||||
scheduler::Context::CurrentThread(s) => s.defer.defer(cx.waker()),
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
scheduler::Context::MultiThread(s) => s.defer.defer(cx.waker()),
|
||||
#[cfg(all(tokio_unstable, feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(
|
||||
tokio_unstable,
|
||||
feature = "rt-multi-thread",
|
||||
not(target_os = "wasi")
|
||||
))]
|
||||
scheduler::Context::MultiThreadAlt(_) => unimplemented!(),
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(not(tokio_wasi))]
|
||||
#![cfg(not(target_os = "wasi"))]
|
||||
|
||||
use std::{task::Context, time::Duration};
|
||||
|
||||
|
@ -12,7 +12,7 @@ impl AssertSync for AtomicWaker {}
|
||||
impl AssertSend for Waker {}
|
||||
impl AssertSync for Waker {}
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
#[test]
|
||||
@ -37,7 +37,7 @@ fn wake_without_register() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn atomic_waker_panic_safe() {
|
||||
use std::panic;
|
||||
use std::ptr;
|
||||
|
@ -3,7 +3,7 @@ use std::future::Future;
|
||||
use std::sync::Arc;
|
||||
use std::task::{Context, RawWaker, RawWakerVTable, Waker};
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
#[test]
|
||||
@ -101,7 +101,7 @@ fn notify_simple() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(tokio_wasm))]
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
fn watch_test() {
|
||||
let rt = crate::runtime::Builder::new_current_thread()
|
||||
.build()
|
||||
|
@ -3,7 +3,7 @@ use tokio_test::*;
|
||||
|
||||
const MAX_PERMITS: usize = crate::sync::Semaphore::MAX_PERMITS;
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
#[test]
|
||||
@ -177,7 +177,7 @@ fn max_permits_doesnt_panic() {
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn validates_max_permits() {
|
||||
Semaphore::new(MAX_PERMITS + 1);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
#[cfg(not(any(feature = "full", tokio_wasm)))]
|
||||
#[cfg(not(any(feature = "full", target_family = "wasm")))]
|
||||
compile_error!("run main Tokio tests with `--features full`");
|
||||
|
||||
// CI sets `--cfg tokio_no_parking_lot` when trying to run tests with
|
||||
|
@ -130,7 +130,7 @@ macro_rules! assert_value {
|
||||
macro_rules! cfg_not_wasi {
|
||||
($($item:item)*) => {
|
||||
$(
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
$item
|
||||
)*
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind()
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind()
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support file operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support file operations
|
||||
|
||||
use tokio::fs;
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tokio::fs;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tokio::fs;
|
||||
use tokio_test::{assert_err, assert_ok};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use std::io::prelude::*;
|
||||
use tempfile::NamedTempFile;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tokio::fs;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use std::io::Write;
|
||||
use tempfile::NamedTempFile;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
#![cfg(windows)]
|
||||
|
||||
use tokio::fs::OpenOptions;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
#![cfg(windows)]
|
||||
|
||||
use tempfile::tempdir;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
#![cfg(windows)]
|
||||
|
||||
use tempfile::tempdir;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // WASI does not support all fs operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // WASI does not support all fs operations
|
||||
|
||||
use tempfile::tempdir;
|
||||
use tokio::fs;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind()
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind()
|
||||
|
||||
use std::time::Duration;
|
||||
use tokio::io::{self, copy_bidirectional, AsyncReadExt, AsyncWriteExt};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
// Wasi does not support panic recovery or threading
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use tokio::runtime;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support bind
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use tokio::runtime;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support file operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support file operations
|
||||
|
||||
use tempfile::NamedTempFile;
|
||||
use tokio::fs::File;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery
|
||||
|
||||
use std::task::{Context, Poll};
|
||||
use std::{error::Error, pin::Pin};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery
|
||||
|
||||
use tokio::io::{AsyncRead, AsyncReadExt, ReadBuf};
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery
|
||||
|
||||
use tokio::io::{split, AsyncRead, AsyncWrite, ReadBuf, ReadHalf, WriteHalf};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery
|
||||
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery
|
||||
|
||||
struct PanicsOnDrop;
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
#![allow(clippy::disallowed_names)]
|
||||
use std::sync::Arc;
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use tokio::sync::{oneshot, Semaphore};
|
||||
|
@ -1,9 +1,9 @@
|
||||
#![cfg(feature = "macros")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
async fn one() {}
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threading
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threading
|
||||
|
||||
#[allow(unused_imports)]
|
||||
use std as tokio;
|
||||
|
@ -1,10 +1,10 @@
|
||||
#![cfg(feature = "macros")]
|
||||
#![allow(clippy::disallowed_names)]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use tokio::sync::oneshot;
|
||||
@ -633,7 +633,7 @@ mod unstable {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(tokio_wasi)))]
|
||||
#[cfg(all(feature = "rt-multi-thread", not(target_os = "wasi")))]
|
||||
fn deterministic_select_multi_thread() {
|
||||
let seed = b"bytes used to generate seed";
|
||||
let rt1 = tokio::runtime::Builder::new_multi_thread()
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threading
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threading
|
||||
|
||||
use tokio::test;
|
||||
|
||||
|
@ -6,10 +6,10 @@ use std::sync::Arc;
|
||||
use tokio::sync::{oneshot, Semaphore};
|
||||
use tokio_test::{assert_pending, assert_ready, task};
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
#[maybe_tokio_test]
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support panic recovery or bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery or bind
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support direct socket operations
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support direct socket operations
|
||||
|
||||
use tokio::net;
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
|
||||
use std::error::Error;
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi does not support panic recovery
|
||||
|
||||
use tokio::net::TcpStream;
|
||||
use tokio::sync::oneshot;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi cannot run system commands
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi cannot run system commands
|
||||
|
||||
use tokio::process::Command;
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -178,7 +178,7 @@ fn drop_tasks_in_context() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")]
|
||||
#[should_panic(expected = "boom")]
|
||||
fn wake_in_drop_after_panic() {
|
||||
let (tx, rx) = oneshot::channel::<()>();
|
||||
@ -239,7 +239,7 @@ fn spawn_two() {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg_attr(tokio_wasi, ignore = "WASI: std::thread::spawn not supported")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "WASI: std::thread::spawn not supported")]
|
||||
#[test]
|
||||
fn spawn_remote() {
|
||||
let rt = rt();
|
||||
@ -276,7 +276,7 @@ fn spawn_remote() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")]
|
||||
#[should_panic(
|
||||
expected = "A Tokio 1.x context was found, but timers are disabled. Call `enable_time` on the runtime builder to enable timers."
|
||||
)]
|
||||
@ -315,7 +315,7 @@ mod unstable {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")]
|
||||
fn spawns_do_nothing() {
|
||||
use std::sync::Arc;
|
||||
|
||||
@ -344,7 +344,7 @@ mod unstable {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")]
|
||||
fn shutdown_all_concurrent_block_on() {
|
||||
const N: usize = 2;
|
||||
use std::sync::{mpsc, Arc};
|
||||
|
@ -21,7 +21,7 @@ macro_rules! rt_test {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
mod threaded_scheduler_4_threads {
|
||||
$($t)*
|
||||
|
||||
@ -37,7 +37,7 @@ macro_rules! rt_test {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
mod threaded_scheduler_1_thread {
|
||||
$($t)*
|
||||
|
||||
@ -53,7 +53,7 @@ macro_rules! rt_test {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[cfg(tokio_unstable)]
|
||||
mod alt_threaded_scheduler_4_threads {
|
||||
$($t)*
|
||||
@ -70,7 +70,7 @@ macro_rules! rt_test {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[cfg(tokio_unstable)]
|
||||
mod alt_threaded_scheduler_1_thread {
|
||||
$($t)*
|
||||
@ -844,7 +844,7 @@ rt_test! {
|
||||
assert_err!(rx.try_recv());
|
||||
}
|
||||
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support threads or panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support threads or panic recovery")]
|
||||
#[test]
|
||||
fn panic_in_task() {
|
||||
let rt = rt();
|
||||
@ -873,7 +873,7 @@ rt_test! {
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")]
|
||||
fn panic_in_block_on() {
|
||||
let rt = rt();
|
||||
rt.block_on(async { panic!() });
|
||||
@ -1103,7 +1103,7 @@ rt_test! {
|
||||
// See https://github.com/rust-lang/rust/issues/74875
|
||||
#[test]
|
||||
#[cfg(not(windows))]
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support threads")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support threads")]
|
||||
fn runtime_in_thread_local() {
|
||||
use std::cell::RefCell;
|
||||
use std::thread;
|
||||
@ -1148,7 +1148,7 @@ rt_test! {
|
||||
tx.send(()).unwrap();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi does not support bind
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi does not support bind
|
||||
#[test]
|
||||
fn local_set_block_on_socket() {
|
||||
let rt = rt();
|
||||
@ -1170,7 +1170,7 @@ rt_test! {
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi does not support bind
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi does not support bind
|
||||
#[test]
|
||||
fn local_set_client_server_block_on() {
|
||||
let rt = rt();
|
||||
@ -1184,7 +1184,7 @@ rt_test! {
|
||||
assert_err!(rx.try_recv());
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi does not support bind
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi does not support bind
|
||||
async fn client_server_local(tx: mpsc::Sender<()>) {
|
||||
let server = assert_ok!(TcpListener::bind("127.0.0.1:0").await);
|
||||
|
||||
|
@ -42,7 +42,7 @@ fn interleave_enter_same_rt() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
fn interleave_then_enter() {
|
||||
let _ = std::panic::catch_unwind(|| {
|
||||
let rt1 = rt();
|
||||
|
@ -10,10 +10,10 @@
|
||||
use std::time::Duration;
|
||||
use tokio::runtime::{Handle, Runtime};
|
||||
use tokio::sync::mpsc;
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use tokio::{net, time};
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
macro_rules! multi_threaded_rt_test {
|
||||
($($t:tt)*) => {
|
||||
mod threaded_scheduler_4_threads_only {
|
||||
@ -46,7 +46,7 @@ macro_rules! multi_threaded_rt_test {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
macro_rules! rt_test {
|
||||
($($t:tt)*) => {
|
||||
mod current_thread_scheduler {
|
||||
@ -126,7 +126,7 @@ fn unbounded_mpsc_channel() {
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support file operations or bind
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support file operations or bind
|
||||
rt_test! {
|
||||
use tokio::fs;
|
||||
// ==== spawn blocking futures ======
|
||||
@ -419,7 +419,7 @@ rt_test! {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
multi_threaded_rt_test! {
|
||||
#[cfg(unix)]
|
||||
#[test]
|
||||
@ -482,7 +482,7 @@ multi_threaded_rt_test! {
|
||||
// ==== utils ======
|
||||
|
||||
/// Create a new multi threaded runtime
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
fn new_multi_thread(n: usize) -> Runtime {
|
||||
tokio::runtime::Builder::new_multi_thread()
|
||||
.worker_threads(n)
|
||||
@ -513,7 +513,7 @@ where
|
||||
f();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
{
|
||||
let rt = new_multi_thread(1);
|
||||
let _enter = rt.enter();
|
||||
@ -523,7 +523,7 @@ where
|
||||
f();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
{
|
||||
let rt = new_multi_thread(4);
|
||||
let _enter = rt.enter();
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", tokio_unstable, not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", tokio_unstable, not(target_os = "wasi")))]
|
||||
|
||||
use std::future::Future;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "full")]
|
||||
#![cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery
|
||||
#![cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery
|
||||
|
||||
use futures::future;
|
||||
use std::error::Error;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
#![cfg(tokio_unstable)]
|
||||
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
use tokio::signal::unix::{signal, SignalKind};
|
||||
|
||||
#[cfg_attr(tokio_wasi, ignore = "Wasi does not support panic recovery")]
|
||||
#[cfg_attr(target_os = "wasi", ignore = "Wasi does not support panic recovery")]
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn no_runtime_panics_creating_signals() {
|
||||
|
@ -2,7 +2,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use tokio::sync::Barrier;
|
||||
|
@ -2,7 +2,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use tokio::sync::broadcast;
|
||||
@ -276,14 +276,14 @@ fn send_no_rx() {
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn zero_capacity() {
|
||||
broadcast::channel::<()>(0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn capacity_too_big() {
|
||||
use std::usize;
|
||||
|
||||
@ -292,7 +292,7 @@ fn capacity_too_big() {
|
||||
|
||||
#[test]
|
||||
#[cfg(panic = "unwind")]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn panic_in_clone() {
|
||||
use std::panic::{self, AssertUnwindSafe};
|
||||
|
||||
@ -563,7 +563,7 @@ fn sender_len() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
fn sender_len_random() {
|
||||
use rand::Rng;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
fn is_error<T: std::error::Error + Send + Sync>() {}
|
||||
|
@ -2,20 +2,21 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use std::fmt;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::mpsc;
|
||||
use tokio::sync::mpsc::error::{TryRecvError, TrySendError};
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
use tokio_test::*;
|
||||
|
||||
#[cfg(not(tokio_wasm))]
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
mod support {
|
||||
pub(crate) mod mpsc_stream;
|
||||
}
|
||||
@ -87,7 +88,7 @@ async fn reserve_disarm() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
async fn send_recv_stream_with_buffer() {
|
||||
use tokio_stream::StreamExt;
|
||||
|
||||
@ -154,7 +155,7 @@ async fn start_send_past_cap() {
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn buffer_gteq_one() {
|
||||
mpsc::channel::<i32>(0);
|
||||
}
|
||||
@ -191,7 +192,7 @@ async fn async_send_recv_unbounded() {
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
async fn send_recv_stream_unbounded() {
|
||||
use tokio_stream::StreamExt;
|
||||
|
||||
@ -452,7 +453,7 @@ fn unconsumed_messages_are_dropped() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
fn blocking_recv() {
|
||||
let (tx, mut rx) = mpsc::channel::<u8>(1);
|
||||
|
||||
@ -470,14 +471,14 @@ fn blocking_recv() {
|
||||
|
||||
#[tokio::test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
async fn blocking_recv_async() {
|
||||
let (_tx, mut rx) = mpsc::channel::<()>(1);
|
||||
let _ = rx.blocking_recv();
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
fn blocking_send() {
|
||||
let (tx, mut rx) = mpsc::channel::<u8>(1);
|
||||
|
||||
@ -495,7 +496,7 @@ fn blocking_send() {
|
||||
|
||||
#[tokio::test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
async fn blocking_send_async() {
|
||||
let (tx, _rx) = mpsc::channel::<()>(1);
|
||||
let _ = tx.blocking_send(());
|
||||
@ -648,7 +649,7 @@ async fn recv_timeout() {
|
||||
|
||||
#[test]
|
||||
#[should_panic = "there is no reactor running, must be called from the context of a Tokio 1.x runtime"]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn recv_timeout_panic() {
|
||||
use futures::future::FutureExt;
|
||||
use tokio::time::Duration;
|
||||
|
@ -2,7 +2,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use std::sync::atomic::AtomicUsize;
|
||||
|
@ -1,12 +1,12 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use tokio::sync::Mutex;
|
||||
|
@ -1,12 +1,12 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use tokio::sync::Mutex;
|
||||
|
@ -1,7 +1,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use tokio::sync::Notify;
|
||||
|
@ -1,12 +1,12 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use tokio::sync::oneshot;
|
||||
@ -179,7 +179,7 @@ fn explicit_close_try_recv() {
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn close_try_recv_poll() {
|
||||
let (_tx, rx) = oneshot::channel::<i32>();
|
||||
let mut rx = task::spawn(rx);
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
|
||||
use std::{error::Error, sync::Arc};
|
||||
use tokio::{
|
||||
|
@ -1,12 +1,12 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as maybe_tokio_test;
|
||||
|
||||
#[cfg(not(tokio_wasm_not_wasi))]
|
||||
#[cfg(not(all(target_family = "wasm", not(target_os = "wasi"))))]
|
||||
use tokio::test as maybe_tokio_test;
|
||||
|
||||
use std::task::Poll;
|
||||
@ -172,7 +172,7 @@ async fn write_order() {
|
||||
}
|
||||
|
||||
// A single RwLock is contested by tasks in multiple threads
|
||||
#[cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#[cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread", worker_threads = 8)]
|
||||
async fn multithreaded() {
|
||||
use futures::stream::{self, StreamExt};
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use std::sync::Arc;
|
||||
@ -78,7 +78,7 @@ fn merge() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(tokio_wasm))] // No stack unwinding on wasm targets
|
||||
#[cfg(not(target_family = "wasm"))] // No stack unwinding on wasm targets
|
||||
#[should_panic]
|
||||
fn merge_unrelated_permits() {
|
||||
let sem1 = Arc::new(Semaphore::new(3));
|
||||
@ -118,7 +118,7 @@ fn add_max_amount_permits() {
|
||||
assert_eq!(s.available_permits(), tokio::sync::Semaphore::MAX_PERMITS);
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn add_more_than_max_amount_permits1() {
|
||||
@ -126,7 +126,7 @@ fn add_more_than_max_amount_permits1() {
|
||||
s.add_permits(tokio::sync::Semaphore::MAX_PERMITS);
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn add_more_than_max_amount_permits2() {
|
||||
@ -135,7 +135,7 @@ fn add_more_than_max_amount_permits2() {
|
||||
s.add_permits(1);
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn panic_when_exceeds_maxpermits() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use std::sync::Arc;
|
||||
@ -104,7 +104,7 @@ fn merge() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(not(tokio_wasm))] // No stack unwinding on wasm targets
|
||||
#[cfg(not(target_family = "wasm"))] // No stack unwinding on wasm targets
|
||||
#[should_panic]
|
||||
fn merge_unrelated_permits() {
|
||||
let sem1 = Arc::new(Semaphore::new(3));
|
||||
|
@ -2,7 +2,7 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(feature = "sync")]
|
||||
|
||||
#[cfg(tokio_wasm_not_wasi)]
|
||||
#[cfg(all(target_family = "wasm", not(target_os = "wasi")))]
|
||||
use wasm_bindgen_test::wasm_bindgen_test as test;
|
||||
|
||||
use tokio::sync::watch;
|
||||
@ -214,7 +214,7 @@ fn reopened_after_subscribe() {
|
||||
|
||||
#[test]
|
||||
#[cfg(panic = "unwind")]
|
||||
#[cfg(not(tokio_wasm))] // wasm currently doesn't support unwinding
|
||||
#[cfg(not(target_family = "wasm"))] // wasm currently doesn't support unwinding
|
||||
fn send_modify_panic() {
|
||||
let (tx, mut rx) = watch::channel("one");
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support panic recovery
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery
|
||||
|
||||
use std::sync::Arc;
|
||||
use std::thread::sleep;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
|
||||
use tokio::{runtime, task, time};
|
||||
use tokio_test::assert_ok;
|
||||
|
@ -2,21 +2,21 @@
|
||||
#![allow(clippy::declare_interior_mutable_const)]
|
||||
#![cfg(all(feature = "full", tokio_unstable))]
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use std::error::Error;
|
||||
use std::future::Future;
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use tokio::runtime::{Builder, Runtime};
|
||||
use tokio::sync::oneshot;
|
||||
use tokio::task::{self, Id, LocalSet};
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
mod support {
|
||||
pub mod panic;
|
||||
}
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use support::panic::test_panic;
|
||||
|
||||
#[tokio::test(flavor = "current_thread")]
|
||||
@ -26,7 +26,7 @@ async fn task_id_spawn() {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[tokio::test(flavor = "current_thread")]
|
||||
async fn task_id_spawn_blocking() {
|
||||
task::spawn_blocking(|| println!("task id: {}", task::id()))
|
||||
@ -43,7 +43,7 @@ async fn task_id_collision_current_thread() {
|
||||
assert_ne!(id1.unwrap(), id2.unwrap());
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn task_id_collision_multi_thread() {
|
||||
let handle1 = tokio::spawn(async { task::id() });
|
||||
@ -64,7 +64,7 @@ async fn task_ids_match_current_thread() {
|
||||
handle.await.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn task_ids_match_multi_thread() {
|
||||
let (tx, rx) = oneshot::channel();
|
||||
@ -76,7 +76,7 @@ async fn task_ids_match_multi_thread() {
|
||||
handle.await.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn task_id_future_destructor_completion() {
|
||||
struct MyFuture {
|
||||
@ -104,7 +104,7 @@ async fn task_id_future_destructor_completion() {
|
||||
assert_eq!(rx.await.unwrap(), id);
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn task_id_future_destructor_abort() {
|
||||
struct MyFuture {
|
||||
@ -210,7 +210,7 @@ fn task_try_id_outside_task() {
|
||||
assert_eq!(None, task::try_id());
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[test]
|
||||
fn task_try_id_inside_block_on() {
|
||||
let rt = Runtime::new().unwrap();
|
||||
@ -253,7 +253,7 @@ async fn task_id_nested_spawn_local() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn task_id_block_in_place_block_on_spawn() {
|
||||
task::spawn(async {
|
||||
@ -273,7 +273,7 @@ async fn task_id_block_in_place_block_on_spawn() {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[test]
|
||||
fn task_id_outside_task_panic_caller() -> Result<(), Box<dyn Error>> {
|
||||
let panic_location_file = test_panic(|| {
|
||||
@ -286,7 +286,7 @@ fn task_id_outside_task_panic_caller() -> Result<(), Box<dyn Error>> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
#[test]
|
||||
fn task_id_inside_block_on_panic_caller() -> Result<(), Box<dyn Error>> {
|
||||
let panic_location_file = test_panic(|| {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support threads
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support threads
|
||||
#![allow(clippy::declare_interior_mutable_const)]
|
||||
use std::future::Future;
|
||||
use std::pin::Pin;
|
||||
|
@ -11,13 +11,13 @@ use tokio::sync::{mpsc, oneshot};
|
||||
use tokio::task::{self, LocalSet};
|
||||
use tokio::time;
|
||||
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use std::cell::Cell;
|
||||
use std::sync::atomic::AtomicBool;
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use std::sync::atomic::AtomicUsize;
|
||||
use std::sync::atomic::Ordering;
|
||||
#[cfg(not(tokio_wasi))]
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
use std::sync::atomic::Ordering::SeqCst;
|
||||
use std::time::Duration;
|
||||
|
||||
@ -30,7 +30,7 @@ async fn local_current_thread_scheduler() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn local_threadpool() {
|
||||
thread_local! {
|
||||
@ -51,7 +51,7 @@ async fn local_threadpool() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn localset_future_threadpool() {
|
||||
thread_local! {
|
||||
@ -67,7 +67,7 @@ async fn localset_future_threadpool() {
|
||||
local.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn localset_future_timers() {
|
||||
static RAN1: AtomicBool = AtomicBool::new(false);
|
||||
@ -112,7 +112,7 @@ async fn localset_future_drives_all_local_futs() {
|
||||
assert!(RAN3.load(Ordering::SeqCst));
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn local_threadpool_timer() {
|
||||
// This test ensures that runtime services like the timer are properly
|
||||
@ -151,7 +151,7 @@ fn enter_guard_spawn() {
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery
|
||||
#[test]
|
||||
// This will panic, since the thread that calls `block_on` cannot use
|
||||
// in-place blocking inside of `block_on`.
|
||||
@ -178,7 +178,7 @@ fn local_threadpool_blocking_in_place() {
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn local_threadpool_blocking_run() {
|
||||
thread_local! {
|
||||
@ -207,7 +207,7 @@ async fn local_threadpool_blocking_run() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn all_spawns_are_local() {
|
||||
use futures::future;
|
||||
@ -234,7 +234,7 @@ async fn all_spawns_are_local() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn nested_spawn_is_local() {
|
||||
thread_local! {
|
||||
@ -270,7 +270,7 @@ async fn nested_spawn_is_local() {
|
||||
.await;
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[test]
|
||||
fn join_local_future_elsewhere() {
|
||||
thread_local! {
|
||||
@ -307,7 +307,7 @@ fn join_local_future_elsewhere() {
|
||||
}
|
||||
|
||||
// Tests for <https://github.com/tokio-rs/tokio/issues/4973>
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support threads
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support threads
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn localset_in_thread_local() {
|
||||
thread_local! {
|
||||
@ -398,7 +398,10 @@ fn with_timeout(timeout: Duration, f: impl FnOnce() + Send + 'static) {
|
||||
thread.join().expect("test thread should not panic!")
|
||||
}
|
||||
|
||||
#[cfg_attr(tokio_wasi, ignore = "`unwrap()` in `with_timeout()` panics on Wasi")]
|
||||
#[cfg_attr(
|
||||
target_os = "wasi",
|
||||
ignore = "`unwrap()` in `with_timeout()` panics on Wasi"
|
||||
)]
|
||||
#[test]
|
||||
fn drop_cancels_remote_tasks() {
|
||||
// This test reproduces issue #1885.
|
||||
@ -422,7 +425,7 @@ fn drop_cancels_remote_tasks() {
|
||||
}
|
||||
|
||||
#[cfg_attr(
|
||||
tokio_wasi,
|
||||
target_os = "wasi",
|
||||
ignore = "FIXME: `task::spawn_local().await.unwrap()` panics on Wasi"
|
||||
)]
|
||||
#[test]
|
||||
@ -446,7 +449,7 @@ fn local_tasks_wake_join_all() {
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery
|
||||
#[test]
|
||||
fn local_tasks_are_polled_after_tick() {
|
||||
// This test depends on timing, so we run it up to five times.
|
||||
@ -463,7 +466,7 @@ fn local_tasks_are_polled_after_tick() {
|
||||
local_tasks_are_polled_after_tick_inner();
|
||||
}
|
||||
|
||||
#[cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery
|
||||
#[cfg(not(target_os = "wasi"))] // Wasi doesn't support panic recovery
|
||||
#[tokio::main(flavor = "current_thread")]
|
||||
async fn local_tasks_are_polled_after_tick_inner() {
|
||||
// Reproduces issues #1899 and #1900
|
||||
|
@ -1,6 +1,6 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![allow(clippy::declare_interior_mutable_const)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))]
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))]
|
||||
|
||||
use futures::future;
|
||||
use std::error::Error;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
use tokio::sync::{mpsc, oneshot};
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
use tokio::sync::oneshot;
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi doesn't support bind
|
||||
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support bind
|
||||
|
||||
use tokio::io::{self, AsyncReadExt, AsyncWriteExt};
|
||||
use tokio::net::{TcpListener, TcpStream};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user