test_collector_utils/
lib.rs

1use std::future::Future;
2use std::pin::Pin;
3
4type AsyncFn = Box<dyn Fn() -> Pin<Box<dyn Future<Output=()>>>>;
5
6pub struct IntegrationTestMeta{
7    pub name: String,
8    pub sync_fn: Option<fn()>,
9    pub async_fn: Option<AsyncFn>,
10}
11
12pub trait IntegrationTestRunner {
13    fn block_on<F: Future>(&self, fut: F) -> F::Output;
14}
15
16impl IntegrationTestMeta {
17    pub fn for_sync_fn(name: String, function: fn()) -> IntegrationTestMeta {
18        IntegrationTestMeta {
19            name,
20            sync_fn: Some(function),
21            async_fn: None
22        }
23    }
24
25    pub fn for_async_fn(name: String, function: AsyncFn) -> IntegrationTestMeta {
26        IntegrationTestMeta {
27            name,
28            sync_fn: None,
29            async_fn: Some(function),
30        }
31    }
32}
33
34inventory::collect!(IntegrationTestMeta);