2024-06-10 05:09:48 -05:00
|
|
|
//! This is a self-test for the `run_in_tmpdir` helper in the support library. This test tries to
|
|
|
|
//! check that files and directories created within the temporary directory gets properly cleared
|
|
|
|
//! when returning from the closure.
|
|
|
|
|
|
|
|
use std::fs;
|
2024-08-10 13:06:10 -05:00
|
|
|
use std::path::PathBuf;
|
2024-06-10 05:09:48 -05:00
|
|
|
|
|
|
|
use run_make_support::{cwd, run_in_tmpdir};
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let mut file_path = PathBuf::new();
|
|
|
|
let mut dir_path = PathBuf::new();
|
|
|
|
let mut readonly_file_path = PathBuf::new();
|
|
|
|
let test_cwd = cwd();
|
|
|
|
run_in_tmpdir(|| {
|
|
|
|
assert_ne!(test_cwd, cwd(), "test cwd should not be the same as tmpdir cwd");
|
|
|
|
|
|
|
|
file_path = cwd().join("foo.txt");
|
|
|
|
fs::write(&file_path, "hi").unwrap();
|
|
|
|
|
|
|
|
dir_path = cwd().join("bar");
|
|
|
|
fs::create_dir_all(&dir_path).unwrap();
|
|
|
|
|
|
|
|
readonly_file_path = cwd().join("readonly-file.txt");
|
|
|
|
fs::write(&readonly_file_path, "owo").unwrap();
|
|
|
|
let mut perms = fs::metadata(&readonly_file_path).unwrap().permissions();
|
|
|
|
perms.set_readonly(true);
|
|
|
|
fs::set_permissions(&mut readonly_file_path, perms).unwrap();
|
|
|
|
|
|
|
|
assert!(file_path.exists());
|
|
|
|
assert!(dir_path.exists());
|
|
|
|
assert!(readonly_file_path.exists());
|
|
|
|
});
|
|
|
|
assert!(!file_path.exists());
|
|
|
|
assert!(!dir_path.exists());
|
|
|
|
assert!(!readonly_file_path.exists());
|
|
|
|
assert_eq!(test_cwd, cwd(), "test cwd is not correctly restored");
|
|
|
|
}
|