diff options
Diffstat (limited to 'test_util/src/temp_dir.rs')
-rw-r--r-- | test_util/src/temp_dir.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test_util/src/temp_dir.rs b/test_util/src/temp_dir.rs index f0f866d88..f66bf1398 100644 --- a/test_util/src/temp_dir.rs +++ b/test_util/src/temp_dir.rs @@ -80,4 +80,40 @@ impl TempDir { pub fn write(&self, path: impl AsRef<Path>, text: impl AsRef<str>) { fs::write(self.path().join(path), text.as_ref()).unwrap(); } + + pub fn symlink_dir( + &self, + oldpath: impl AsRef<Path>, + newpath: impl AsRef<Path>, + ) { + #[cfg(unix)] + { + use std::os::unix::fs::symlink; + symlink(self.path().join(oldpath), self.path().join(newpath)).unwrap(); + } + #[cfg(not(unix))] + { + use std::os::windows::fs::symlink_dir; + symlink_dir(self.path().join(oldpath), self.path().join(newpath)) + .unwrap(); + } + } + + pub fn symlink_file( + &self, + oldpath: impl AsRef<Path>, + newpath: impl AsRef<Path>, + ) { + #[cfg(unix)] + { + use std::os::unix::fs::symlink; + symlink(self.path().join(oldpath), self.path().join(newpath)).unwrap(); + } + #[cfg(not(unix))] + { + use std::os::windows::fs::symlink_file; + symlink_file(self.path().join(oldpath), self.path().join(newpath)) + .unwrap(); + } + } } |