diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_fcntl.rs | 19 |
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"))] |