Skip to content

Commit

Permalink
Add test for the behaviour of fs::copy when to is a symlink
Browse files Browse the repository at this point in the history
  • Loading branch information
ebarnard committed Mar 4, 2019
1 parent c82a42c commit 0a991e4
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/libstd/fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2837,6 +2837,26 @@ mod tests {
assert_eq!(check!(out_path.metadata()).len(), copied_len);
}

#[test]
fn copy_file_follows_dst_symlink() {
let tmp = tmpdir();
if !got_symlink_permission(&tmp) { return };

let in_path = tmp.join("in.txt");
let out_path = tmp.join("out.txt");
let out_path_symlink = tmp.join("out_symlink.txt");

check!(fs::write(&in_path, "foo"));
check!(fs::write(&out_path, "bar"));
check!(symlink_file(&out_path, &out_path_symlink));

check!(fs::copy(&in_path, &out_path_symlink));

assert!(check!(out_path_symlink.symlink_metadata()).file_type().is_symlink());
assert_eq!(check!(fs::read(&out_path_symlink)), b"foo".to_vec());
assert_eq!(check!(fs::read(&out_path)), b"foo".to_vec());
}

#[test]
fn symlinks_work() {
let tmpdir = tmpdir();
Expand Down

0 comments on commit 0a991e4

Please sign in to comment.