summaryrefslogtreecommitdiff
path: root/test/test_fcntl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_fcntl.rs')
-rw-r--r--test/test_fcntl.rs19
1 files changed, 15 insertions, 4 deletions
diff --git a/test/test_fcntl.rs b/test/test_fcntl.rs
index 6b2bbd67..c8773219 100644
--- a/test/test_fcntl.rs
+++ b/test/test_fcntl.rs
@@ -56,12 +56,23 @@ fn test_readlink() {
let dirfd = open(tempdir.path(),
OFlag::empty(),
Mode::empty()).unwrap();
+ let expected_dir = src.to_str().unwrap();
+ // When the size of the buffer is bigger than the expected directory length
let mut buf = vec![0; src.to_str().unwrap().len() + 1];
- assert_eq!(readlink(&dst, &mut buf).unwrap().to_str().unwrap(),
- src.to_str().unwrap());
- assert_eq!(readlinkat(dirfd, "b", &mut buf).unwrap().to_str().unwrap(),
- src.to_str().unwrap());
+ assert_eq!(readlink(&dst, &mut buf).unwrap().to_str().unwrap(), expected_dir);
+ assert_eq!(readlinkat(dirfd, "b", &mut buf).unwrap().to_str().unwrap(), expected_dir);
+
+ // When the size of the buffer is equal to the expected directory length
+ let mut exact_buf = vec![0; src.to_str().unwrap().len()];
+ assert_eq!(readlink(&dst, &mut exact_buf).unwrap().to_str().unwrap(), expected_dir);
+ assert_eq!(readlinkat(dirfd, "b", &mut exact_buf).unwrap().to_str().unwrap(), expected_dir);
+
+ // When the size of the buffer is smaller than the expected directory length
+ let mut small_buf = vec![0;0];
+ assert_eq!(readlink(&dst, &mut small_buf).unwrap().to_str().unwrap(), "");
+ assert_eq!(readlinkat(dirfd, "b", &mut small_buf).unwrap().to_str().unwrap(), "");
+
}
#[cfg(any(target_os = "linux", target_os = "android"))]