use std::env;
use std::fs;
use std::path::Path;
const FIXTURES_DIR: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/fixtures/");
const MOCK_BIN_DIR: &str = concat!(env!("CARGO_TARGET_TMPDIR"), "/mock_bin/");
pub fn mock_crontab(file: &str) {
let fixtures_dir = Path::new(FIXTURES_DIR);
let bin_dir = Path::new(MOCK_BIN_DIR);
let fixture = fixtures_dir.join(file).with_extension("sh");
let test_mock = bin_dir.join("crontab");
assert!(
fs::create_dir_all(bin_dir).is_ok(),
"Error creating mock bin directory: '{}'.",
bin_dir.display()
);
assert!(
fs::copy(&fixture, test_mock).is_ok(),
"Error setting up mock crontab: '{}'.",
fixture.display()
);
unsafe {
env::set_var("PATH", format!("{}:/bin:/usr/bin/", bin_dir.display()));
}
}
pub fn mock_shell(file: &str) {
let fixtures_dir = Path::new(FIXTURES_DIR);
let bin_dir = Path::new(MOCK_BIN_DIR);
let fixture = fixtures_dir.join(file).with_extension("sh");
let test_mock = bin_dir.join("mock_shell");
assert!(
fs::create_dir_all(bin_dir).is_ok(),
"Error creating mock bin directory: '{}'.",
bin_dir.display()
);
assert!(
fs::copy(&fixture, test_mock).is_ok(),
"Error setting up mock shell: '{}'.",
fixture.display()
);
unsafe {
env::set_var("PATH", format!("{}:/bin:/usr/bin/", bin_dir.display()));
}
}
pub fn read_output_file(file: &str) -> String {
let bin_dir = Path::new(MOCK_BIN_DIR);
fs::read_to_string(bin_dir.join(file).with_extension("txt"))
.expect("if file doesn't exist, the test failed")
}