diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs index 0669f545a83..1da7a1502d9 100644 --- a/src/libstd/fs.rs +++ b/src/libstd/fs.rs @@ -2162,4 +2162,10 @@ mod tests { } } } + + #[test] + fn read_dir_not_found() { + let res = fs::read_dir("/path/that/does/not/exist"); + assert_eq!(res.err().unwrap().kind(), ErrorKind::NotFound); + } } diff --git a/src/libstd/sys/windows/c.rs b/src/libstd/sys/windows/c.rs index bac5b47eb1a..a9eb4db2f53 100644 --- a/src/libstd/sys/windows/c.rs +++ b/src/libstd/sys/windows/c.rs @@ -83,6 +83,8 @@ pub const EXCEPTION_CONTINUE_SEARCH: LONG = 0; pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15; pub const EXCEPTION_STACK_OVERFLOW: DWORD = 0xc00000fd; +pub const ERROR_PATH_NOT_FOUND: libc::c_int = 3; + #[repr(C)] #[cfg(target_arch = "x86")] pub struct WSADATA { diff --git a/src/libstd/sys/windows/mod.rs b/src/libstd/sys/windows/mod.rs index 85f5d4e5884..4df3c561ab1 100644 --- a/src/libstd/sys/windows/mod.rs +++ b/src/libstd/sys/windows/mod.rs @@ -51,6 +51,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind { libc::ERROR_ALREADY_EXISTS => ErrorKind::AlreadyExists, libc::ERROR_BROKEN_PIPE => ErrorKind::BrokenPipe, libc::ERROR_FILE_NOT_FOUND => ErrorKind::NotFound, + c::ERROR_PATH_NOT_FOUND => ErrorKind::NotFound, libc::ERROR_NO_DATA => ErrorKind::BrokenPipe, libc::ERROR_OPERATION_ABORTED => ErrorKind::TimedOut,