futures_test/
lib.rs

1//! Utilities to make testing [`Future`s](futures_core::future::Future) easier
2
3#![doc(test(
4    no_crate_inject,
5    attr(
6        deny(warnings, rust_2018_idioms, single_use_lifetimes),
7        allow(dead_code, unused_assignments, unused_variables)
8    )
9))]
10#![warn(missing_docs, unsafe_op_in_unsafe_fn)]
11#![allow(clippy::test_attr_in_doctest)]
12
13#[cfg(not(feature = "std"))]
14compile_error!(
15    "`futures-test` must have the `std` feature activated, this is a default-active feature"
16);
17
18// Not public API.
19#[doc(hidden)]
20#[cfg(feature = "std")]
21pub mod __private {
22    pub use futures_core::{future, stream, task};
23    pub use futures_executor::block_on;
24    pub use std::{
25        option::Option::{None, Some},
26        pin::Pin,
27        result::Result::{Err, Ok},
28    };
29
30    pub mod assert {
31        pub use crate::assert::*;
32    }
33}
34
35#[macro_use]
36#[cfg(feature = "std")]
37mod assert;
38
39#[cfg(feature = "std")]
40pub mod task;
41
42#[cfg(feature = "std")]
43pub mod future;
44
45#[cfg(feature = "std")]
46pub mod stream;
47
48#[cfg(feature = "std")]
49pub mod sink;
50
51#[cfg(feature = "std")]
52pub mod io;
53
54mod assert_unmoved;
55mod interleave_pending;
56mod track_closed;
57
58/// Enables an `async` test function. The generated future will be run to completion with
59/// [`futures_executor::block_on`].
60///
61/// ```
62/// #[futures_test::test]
63/// async fn my_test() {
64///     let fut = async { true };
65///     assert!(fut.await);
66/// }
67/// ```
68///
69/// This is equivalent to the following code:
70///
71/// ```
72/// #[test]
73/// fn my_test() {
74///     futures::executor::block_on(async move {
75///         let fut = async { true };
76///         assert!(fut.await);
77///     })
78/// }
79/// ```
80#[cfg(feature = "std")]
81pub use futures_macro::test_internal as test;