win: remap ERROR_DIRECTORY to UV_ENOTDIR

This commit is contained in:
Hüseyin Açacak 2024-11-11 13:04:53 +03:00
parent d4ab6fbba4
commit 5a2f3956a6
3 changed files with 32 additions and 1 deletions

View File

@ -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;

View File

@ -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;
}

View File

@ -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)