()
- .and_then(io::Error::raw_os_error),
- Some(*want_err),
- "expected io::Error {}, got '{}'",
- errno_description(*want_err),
- err,
- );
- return Ok(());
- }
- };
+ (Ok(h), Err(want_err)) => anyhow::bail!(
+ "expected to get io::Error {} but instead got file {}",
+ errno_description(want_err),
+ h.as_file().as_unsafe_path_unchecked()?.display(),
+ ),
+
+ (Err(err), Err(want_err)) => {
+ assert_eq!(
+ err.kind(),
+ want_err,
+ "expected io::Error {}, got '{}'",
+ errno_description(want_err),
+ err,
+ );
+ return Ok(());
+ }
+ };
let expected_path = expected_path.trim_start_matches('/');
let real_handle_path = handle.as_file().as_unsafe_path_unchecked()?;
assert_eq!(
real_handle_path,
- root_dir.as_ref().join(expected_path),
+ root_dir.join(expected_path),
"handle path mismatch",
);
@@ -464,78 +414,25 @@ mod utils {
let real_file_type = meta.st_mode() & libc::S_IFMT;
assert_eq!(real_file_type, expected_file_type, "file type mismatch",);
- if reopen_tests {
- match real_file_type {
- libc::S_IFDIR => {
- check_reopen(&handle, OpenFlags::O_RDONLY, None)?;
- check_reopen(&handle, OpenFlags::O_DIRECTORY, None)?;
- }
- libc::S_IFREG => {
- check_reopen(&handle, OpenFlags::O_RDWR, None)?;
- check_reopen(&handle, OpenFlags::O_DIRECTORY, Some(libc::ENOTDIR))?;
- }
- _ => {
- check_reopen(&handle, OpenFlags::O_PATH, None)?;
- check_reopen(
- &handle,
- OpenFlags::O_PATH | OpenFlags::O_DIRECTORY,
- Some(libc::ENOTDIR),
- )?;
- }
+ match real_file_type {
+ libc::S_IFDIR => {
+ check_reopen(&handle, OpenFlags::O_RDONLY, None)?;
+ check_reopen(&handle, OpenFlags::O_DIRECTORY, None)?;
+ }
+ libc::S_IFREG => {
+ check_reopen(&handle, OpenFlags::O_RDWR, None)?;
+ check_reopen(&handle, OpenFlags::O_DIRECTORY, Some(libc::ENOTDIR))?;
+ }
+ _ => {
+ check_reopen(&handle, OpenFlags::O_PATH, None)?;
+ check_reopen(
+ &handle,
+ OpenFlags::O_PATH | OpenFlags::O_DIRECTORY,
+ Some(libc::ENOTDIR),
+ )?;
}
}
Ok(())
}
-
- pub(super) fn check_resolve_fn(
- lookup: F,
- root: &File,
- unsafe_path: P,
- expected: &ExpectedResult,
- reopen_tests: bool,
- ) -> Result<(), Error>
- where
- P: AsRef,
- F: FnOnce(&File, P) -> Result,
- {
- check_resolve(
- |root: &File, unsafe_path: P| {
- lookup(root, unsafe_path)
- .map(Handle::from_file_unchecked)
- .map_err(Into::into)
- },
- root,
- root.as_unsafe_path_unchecked()?,
- unsafe_path,
- expected,
- reopen_tests,
- )
- }
-
- pub(super) fn check_resolve_in_root(
- root: &Root,
- unsafe_path: P,
- no_follow_trailing: bool,
- expected: &ExpectedResult,
- reopen_tests: bool,
- ) -> Result<(), Error>
- where
- P: AsRef,
- {
- check_resolve(
- |root: &Root, unsafe_path: P| {
- if no_follow_trailing {
- root.resolve_nofollow(unsafe_path).map_err(Into::into)
- } else {
- root.resolve(unsafe_path).map_err(Into::into)
- }
- },
- root,
- root.as_file().as_unsafe_path_unchecked()?,
- unsafe_path,
- expected,
- reopen_tests,
- )
- }
}