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(connection.as_mut(), $($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}