| //! 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; |
| use std::path::PathBuf; |
| |
| 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"); |
| } |