mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1023 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| #![cfg(all(test, not(any(target_os = "emscripten", target_env = "sgx"))))]
 | |
| 
 | |
| //! Note that this test changes the current directory so
 | |
| //! should not be in the same process as other tests.
 | |
| use std::env;
 | |
| use std::fs;
 | |
| use std::path::{Path, PathBuf};
 | |
| 
 | |
| mod common;
 | |
| 
 | |
| // On some platforms, setting the current directory will prevent deleting it.
 | |
| // So this helper ensures the current directory is reset.
 | |
| struct CurrentDir(PathBuf);
 | |
| impl CurrentDir {
 | |
|     fn new() -> Self {
 | |
|         Self(env::current_dir().unwrap())
 | |
|     }
 | |
|     fn set(&self, path: &Path) {
 | |
|         env::set_current_dir(path).unwrap();
 | |
|     }
 | |
|     fn with(path: &Path, f: impl FnOnce()) {
 | |
|         let current_dir = Self::new();
 | |
|         current_dir.set(path);
 | |
|         f();
 | |
|     }
 | |
| }
 | |
| impl Drop for CurrentDir {
 | |
|     fn drop(&mut self) {
 | |
|         env::set_current_dir(&self.0).unwrap();
 | |
|     }
 | |
| }
 | |
| 
 | |
| #[test]
 | |
| fn create_dir_all_bare() {
 | |
|     let tmpdir = common::tmpdir();
 | |
|     CurrentDir::with(tmpdir.path(), || {
 | |
|         fs::create_dir_all("create-dir-all-bare").unwrap();
 | |
|     });
 | |
| }
 | 
