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}