Sha256: d7f54f60d0305b344b2c30b940662cb75f9f000c2ecfed58c6e8b427e936e787

Contents?: true

Size: 1.87 KB

Versions: 8

Compression:

Stored size: 1.87 KB

Contents

#![warn(rust_2018_idioms)]
#![cfg(feature = "full")]
#![cfg(not(tokio_wasi))] // Wasi doesn't support panic recovery

use futures::future;
use std::error::Error;
use tokio::runtime::{Builder, Handle, Runtime};

mod support {
    pub mod panic;
}
use support::panic::test_panic;

#[test]
fn current_handle_panic_caller() -> Result<(), Box<dyn Error>> {
    let panic_location_file = test_panic(|| {
        let _ = Handle::current();
    });

    // The panic location should be in this file
    assert_eq!(&panic_location_file.unwrap(), file!());

    Ok(())
}

#[test]
fn into_panic_panic_caller() -> Result<(), Box<dyn Error>> {
    let panic_location_file = test_panic(move || {
        let rt = current_thread();
        rt.block_on(async {
            let handle = tokio::spawn(future::pending::<()>());

            handle.abort();

            let err = handle.await.unwrap_err();
            assert!(!&err.is_panic());

            let _ = err.into_panic();
        });
    });

    // The panic location should be in this file
    assert_eq!(&panic_location_file.unwrap(), file!());

    Ok(())
}

#[test]
fn builder_worker_threads_panic_caller() -> Result<(), Box<dyn Error>> {
    let panic_location_file = test_panic(|| {
        let _ = Builder::new_multi_thread().worker_threads(0).build();
    });

    // The panic location should be in this file
    assert_eq!(&panic_location_file.unwrap(), file!());

    Ok(())
}

#[test]
fn builder_max_blocking_threads_panic_caller() -> Result<(), Box<dyn Error>> {
    let panic_location_file = test_panic(|| {
        let _ = Builder::new_multi_thread().max_blocking_threads(0).build();
    });

    // The panic location should be in this file
    assert_eq!(&panic_location_file.unwrap(), file!());

    Ok(())
}

fn current_thread() -> Runtime {
    tokio::runtime::Builder::new_current_thread()
        .enable_all()
        .build()
        .unwrap()
}

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
wasmtime-9.0.1 ./ext/cargo-vendor/tokio-1.28.1/tests/rt_panic.rs
wasmtime-8.0.0 ./ext/cargo-vendor/tokio-1.27.0/tests/rt_panic.rs
wasmtime-7.0.0 ./ext/cargo-vendor/tokio-1.27.0/tests/rt_panic.rs
wasmtime-6.0.1 ./ext/cargo-vendor/tokio-1.25.0/tests/rt_panic.rs
wasmtime-6.0.0 ./ext/cargo-vendor/tokio-1.25.0/tests/rt_panic.rs
wasmtime-5.0.0 ./ext/cargo-vendor/tokio-1.24.2/tests/rt_panic.rs
wasmtime-0.4.1 ./ext/cargo-vendor/tokio-1.23.0/tests/rt_panic.rs
wasmtime-0.4.0 ./ext/cargo-vendor/tokio-1.23.0/tests/rt_panic.rs