add tests for resolve_path
This commit is contained in:
parent
961cbd721b
commit
fd941b014a
1 changed files with 44 additions and 0 deletions
|
@ -268,3 +268,47 @@ mod resolve_hop {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod resolve_path {
|
||||||
|
use super::resolve_path;
|
||||||
|
use std::env::current_dir;
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn invalid_path_returns_err() {
|
||||||
|
assert!(resolve_path(PathBuf::from("/bin/aaaa"), "aaaa").is_err());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn valid_path_returns_ok() {
|
||||||
|
assert!(resolve_path(PathBuf::from("/bin/echo"), "hello").is_ok());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn relative_path_returns_ok() {
|
||||||
|
// How many ".." needed to get to /
|
||||||
|
let nest_level = current_dir().unwrap().ancestors().count() - 1;
|
||||||
|
let mut rel_path = PathBuf::from("../".repeat(nest_level));
|
||||||
|
rel_path.push("./bin/env");
|
||||||
|
assert!(resolve_path(rel_path, "echo").is_ok());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn no_permissions_returns_err() {
|
||||||
|
assert!(
|
||||||
|
// Trying to run a command without permission
|
||||||
|
format!(
|
||||||
|
"{}",
|
||||||
|
resolve_path(PathBuf::from("/root/some_exec"), "").unwrap_err()
|
||||||
|
)
|
||||||
|
.contains("Permission denied")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn non_success_exit_code_yields_err() {
|
||||||
|
// cat-ing a folder always returns exit code 1
|
||||||
|
assert!(resolve_path(PathBuf::from("/bin/cat"), "/").is_err());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue