diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-09-23 08:33:06 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2025-09-23 08:34:45 +0200 |
| commit | 2dc74d621399be454abbbff892fb46204ddc6e7b (patch) | |
| tree | f9525527fc09c465d4e2e4a4f665bfd444b889f8 /crates/rocie-server/tests/_testenv/log.rs | |
| parent | feat: Provide basic barcode handling support (diff) | |
| download | server-2dc74d621399be454abbbff892fb46204ddc6e7b.zip | |
feat(treewide): Add tests and barcode buying/consuming
Diffstat (limited to 'crates/rocie-server/tests/_testenv/log.rs')
| -rw-r--r-- | crates/rocie-server/tests/_testenv/log.rs | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/crates/rocie-server/tests/_testenv/log.rs b/crates/rocie-server/tests/_testenv/log.rs new file mode 100644 index 0000000..9a07e78 --- /dev/null +++ b/crates/rocie-server/tests/_testenv/log.rs @@ -0,0 +1,72 @@ +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),*) => {{ + use std::fmt::Write; + + 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()); + } +} |
