diff --git a/src/win/error.c b/src/win/error.c index 7abf906b..97491857 100644 --- a/src/win/error.c +++ b/src/win/error.c @@ -132,7 +132,6 @@ int uv_translate_sys_error(int sys_errno) { case WSAENETUNREACH: return UV_ENETUNREACH; case WSAENOBUFS: return UV_ENOBUFS; case ERROR_BAD_PATHNAME: return UV_ENOENT; - case ERROR_DIRECTORY: return UV_ENOENT; case ERROR_ENVVAR_NOT_FOUND: return UV_ENOENT; case ERROR_FILE_NOT_FOUND: return UV_ENOENT; case ERROR_INVALID_NAME: return UV_ENOENT; @@ -151,6 +150,7 @@ int uv_translate_sys_error(int sys_errno) { case ERROR_HANDLE_DISK_FULL: return UV_ENOSPC; case ERROR_NOT_CONNECTED: return UV_ENOTCONN; case WSAENOTCONN: return UV_ENOTCONN; + case ERROR_DIRECTORY: return UV_ENOTDIR; case ERROR_DIR_NOT_EMPTY: return UV_ENOTEMPTY; case WSAENOTSOCK: return UV_ENOTSOCK; case ERROR_NOT_SUPPORTED: return UV_ENOTSUP; diff --git a/test/test-fs.c b/test/test-fs.c index 33cbd428..b9b6985d 100644 --- a/test/test-fs.c +++ b/test/test-fs.c @@ -4685,3 +4685,32 @@ TEST_IMPL(fs_wtf) { return 0; } #endif + +TEST_IMPL(fs_open_enotdir) { + int r; + + unlink("test_file.txt"); + + loop = uv_default_loop(); + + r = uv_fs_open(loop, &open_req1, "test_file.txt", + UV_FS_O_WRONLY | UV_FS_O_CREAT, S_IRUSR | S_IWUSR, NULL); + ASSERT_GE(r, 0); + ASSERT_GE(open_req1.result, 0); + uv_fs_req_cleanup(&open_req1); + + r = uv_fs_close(NULL, &close_req, open_req1.result, NULL); + ASSERT_OK(r); + ASSERT_OK(close_req.result); + uv_fs_req_cleanup(&close_req); + + r = uv_fs_open(loop, &open_req1, "test_file.txt/", UV_FS_O_RDONLY, 0, NULL); + ASSERT(r == UV_ENOTDIR); + uv_run(loop, UV_RUN_DEFAULT); + uv_fs_req_cleanup(&open_req1); + + unlink("test_file.txt"); + + MAKE_VALGRIND_HAPPY(loop); + return 0; +} diff --git a/test/test-list.h b/test/test-list.h index e07bd61e..93fe9dae 100644 --- a/test/test-list.h +++ b/test/test-list.h @@ -424,6 +424,7 @@ TEST_DECLARE (fs_scandir_non_existent_dir) TEST_DECLARE (fs_scandir_file) TEST_DECLARE (fs_scandir_early_exit) TEST_DECLARE (fs_open_dir) +TEST_DECLARE (fs_open_enotdir) TEST_DECLARE (fs_readdir_empty_dir) TEST_DECLARE (fs_readdir_file) TEST_DECLARE (fs_readdir_non_empty_dir) @@ -1137,6 +1138,7 @@ TASK_LIST_START TEST_ENTRY (fs_scandir_file) TEST_ENTRY (fs_scandir_early_exit) TEST_ENTRY (fs_open_dir) + TEST_ENTRY (fs_open_enotdir) TEST_ENTRY (fs_readdir_empty_dir) TEST_ENTRY (fs_readdir_file) TEST_ENTRY (fs_readdir_non_empty_dir)