fhttp_core/
test_utils.rs

1#[cfg(test)] extern crate temp_dir;
2use std::path::PathBuf;
3use crate::path_utils::{CanonicalizedPathBuf, canonicalize};
4
5#[cfg(test)] use anyhow::Result;
6#[cfg(test)] use temp_dir::TempDir;
7
8pub fn root() -> CanonicalizedPathBuf {
9    canonicalize(
10        PathBuf::from(env!("CARGO_MANIFEST_DIR"))
11            .parent().unwrap()
12    ).unwrap()
13}
14
15#[cfg(test)]
16pub fn errmsg<T>(r: anyhow::Result<T>) -> String {
17    match r {
18        Ok(_) => panic!("expected an Err!"),
19        Err(e) => e.to_string(),
20    }
21}
22
23#[cfg(test)]
24macro_rules! assert_err(
25    ($code:expr, $expectation:expr)=>{
26        assert_eq!(
27            crate::test_utils::errmsg(
28                $code
29            ),
30            $expectation
31        );
32    };
33);
34
35#[cfg(test)]
36macro_rules! assert_ok(
37    ($code:expr, $expectation:expr)=>{
38        match $code {
39            Ok(value) => assert_eq!(value, $expectation),
40            Err(_) => panic!("expected an ok value"),
41        };
42    };
43);
44
45#[cfg(test)]
46pub fn write_test_file<S: AsRef<str>>(
47    workdir: &TempDir,
48    filename: S,
49    content: S,
50) -> Result<CanonicalizedPathBuf> {
51    let file = workdir.child(filename.as_ref());
52    std::fs::write(&file, content.as_ref().as_bytes())?;
53    canonicalize(&file)
54}