use af_core::test::prelude::*;
use af_core::{env, path};
pub fn test(cx: &mut test::Context) {
test!(cx, "::project_path()", {
let path = env::project_path().unwrap();
fail::when!(!path::is_absolute(path), "Path is not absolute.");
fail::when!(path != env::var("CARGO_MANIFEST_DIR")?, "Path does not point to manifest dir.");
});
test!(cx, "::workspace_path()", {
let path = env::workspace_path().unwrap();
fail::when!(!path::is_absolute(path), "Path is not absolute.");
fail::when!(
path != path::parent(env::project_path().unwrap()).unwrap(),
"Path does not point to workspace."
);
});
test!(cx, "::var()", {
std::env::remove_var("__TEST_VAR");
fail::when!(env::var("__TEST_VAR").is_ok(), "Read non-existent var.");
std::env::set_var("__TEST_VAR", "value");
fail::when!(env::var("__TEST_VAR").unwrap() != "value", "Value was incorrect.");
});
test!(cx, "::working_path()", {
let path = env::working_path().unwrap();
fail::when!(!path::is_absolute(&path), "Path is not absolute.");
fail::when!(
!path::starts_with(&path, env::workspace_path().unwrap()),
"Path is outside the workspace directory."
);
});
}