1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
use crate::testenv::TestEnv;
macro_rules! request {
($env:expr, $fn:ident ($($arg:expr),* $(,)?)) => {{
match request!(@call, $env, $fn, $($arg),*) {
Ok(ok) => {
$env.log(format!("> {ok:?}"));
ok
},
Err(err) => {
$env.log(format!(">! {err:?}"));
panic!("Server request failed.");
}
}
}};
(@expect_error $reason:literal $env:expr, $fn:ident ($($arg:expr),* $(,)?)) => {{
match request!(@call, $env, $fn, $($arg),*) {
Err(err) => {
$env.log(format!("> `{err}` ({})", $reason));
err
},
Ok(ok) => {
$env.log(format!(">? {ok:?}"));
panic!("Server request succeeded, but should fail.");
}
}
}};
(@call, $env:expr, $fn:ident, $($arg:expr),*) => {{
$env.log(
format!(
"< {}({})",
stringify!($fn),
request!(@format, $fn, $($arg),*)
)
);
$fn(&$env.config, $($arg),*).await
}};
(@format, $fn:ident, $($arg:expr),*) => {{
#[allow(unused_imports)]
use std::fmt::Write;
#[allow(unused_mut)]
let mut base = String::new();
$(
write!(base, "{:?}, ", $arg)
.expect("In memory write");
)*
base.trim().trim_end_matches(',').to_owned()
}};
}
pub(crate) use request;
impl TestEnv {
pub(crate) fn log<A>(&self, message: A)
where
A: AsRef<str>,
{
eprintln!("{}: {}", self.name, message.as_ref());
}
}
|