use std::path::PathBuf;
#[cfg(debug_assertions)]
pub const TEST_ROOT_ENV: &str = "ARCBOX_HELPER_TEST_ROOT";
#[must_use]
pub fn test_root() -> Option<PathBuf> {
#[cfg(debug_assertions)]
{
std::env::var_os(TEST_ROOT_ENV)
.filter(|v| !v.is_empty())
.map(PathBuf::from)
}
#[cfg(not(debug_assertions))]
{
None
}
}
#[must_use]
pub fn resolve(production_absolute: &str) -> PathBuf {
debug_assert!(
production_absolute.starts_with('/'),
"production path must be absolute: {production_absolute}"
);
match test_root() {
Some(root) => root.join(production_absolute.trim_start_matches('/')),
None => PathBuf::from(production_absolute),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn resolve_without_root_is_identity() {
if test_root().is_none() {
assert_eq!(resolve("/usr/local/bin"), PathBuf::from("/usr/local/bin"));
assert_eq!(
resolve("/var/run/docker.sock"),
PathBuf::from("/var/run/docker.sock")
);
}
}
}