Skip to main content

tank_tests/
lib.rs

1mod aggregates;
2mod ambiguity;
3mod arrays1;
4mod arrays2;
5mod books;
6mod complex;
7mod conditions;
8mod custom;
9mod enums;
10mod identifiers;
11mod insane;
12mod interval;
13mod keywords;
14mod kv_storage;
15mod limits;
16mod math;
17mod metrics;
18mod multiple;
19mod operations;
20mod orders;
21mod other;
22mod readme;
23mod requests;
24mod service;
25mod shopping;
26mod simple;
27mod time;
28mod trade;
29mod transaction1;
30mod transaction2;
31mod user;
32
33pub use aggregates::*;
34pub use ambiguity::*;
35pub use arrays1::*;
36pub use arrays2::*;
37pub use books::*;
38pub use complex::*;
39pub use conditions::*;
40pub use custom::*;
41pub use enums::*;
42pub use identifiers::*;
43pub use insane::*;
44pub use interval::*;
45pub use keywords::*;
46pub use kv_storage::*;
47pub use limits::*;
48use log::LevelFilter;
49pub use math::*;
50pub use metrics::*;
51pub use multiple::*;
52pub use operations::*;
53pub use orders::*;
54pub use other::*;
55pub use readme::*;
56pub use requests::*;
57pub use service::*;
58pub use shopping::*;
59pub use simple::*;
60use std::env;
61use tank::{ConnectionPool, Driver};
62pub use time::*;
63pub use trade::*;
64pub use transaction1::*;
65pub use transaction2::*;
66pub use user::*;
67
68pub fn init_logs() {
69    let mut logger = env_logger::builder();
70    logger
71        .is_test(true)
72        .format_file(true)
73        .format_line_number(true);
74    if env::var("RUST_LOG").is_err() {
75        logger.filter_level(LevelFilter::Warn);
76    }
77    let _ = logger.try_init();
78}
79
80pub async fn execute_tests<D: Driver>(pool: &mut impl ConnectionPool<D>) {
81    let mut connection = pool
82        .get()
83        .await
84        .expect("Could not get a connection from the pool");
85    macro_rules! do_test {
86        ($test_function:ident $(, $args:expr )* $(,)?) => {
87            Box::pin($test_function(&mut connection, $($args),*)).await
88        };
89    }
90    do_test!(simple);
91    do_test!(kv_storage);
92    do_test!(trade_simple);
93    do_test!(trade_multiple);
94    do_test!(users);
95    do_test!(aggregates);
96    do_test!(books);
97    do_test!(complex);
98    do_test!(insane);
99    do_test!(limits);
100    #[cfg(not(feature = "disable-multiple-statements"))]
101    do_test!(multiple);
102    #[cfg(not(feature = "disable-intervals"))]
103    do_test!(interval);
104    #[cfg(not(feature = "disable-arrays"))]
105    do_test!(arrays1);
106    #[cfg(not(feature = "disable-arrays"))]
107    do_test!(arrays2);
108    #[cfg(not(feature = "disable-transactions"))]
109    do_test!(transaction1);
110    #[cfg(not(feature = "disable-transactions"))]
111    do_test!(transaction2);
112    do_test!(shopping);
113    do_test!(orders);
114    do_test!(times);
115    do_test!(conditions);
116    do_test!(readme).expect("Readme examples test did not succeed");
117    do_test!(operations).expect("Operations examples test did not succeed");
118    do_test!(advanced_operations).expect("Advanced operations examples test did not succeed");
119    do_test!(metrics);
120    do_test!(math);
121    do_test!(ambiguity);
122    do_test!(other);
123    do_test!(service);
124    do_test!(enums);
125    do_test!(custom);
126    do_test!(requests);
127    do_test!(keywords);
128    do_test!(identifiers);
129}
130
131#[macro_export]
132macro_rules! silent_logs {
133    ($($code:tt)+) => {{
134        let level = log::max_level();
135        log::set_max_level(log::LevelFilter::Off);
136        $($code)+
137        log::set_max_level(level);
138    }};
139}