[PATCH v5 0/2] MR6163: shell32: Fix FO_MOVE when destination has conflicting directory.
-- v5: shell32: Fix FO_MOVE when destination has conflicting directory. https://gitlab.winehq.org/wine/wine/-/merge_requests/6163
From: Spencer Wallace <spencerwallace(a)esri.com> --- dlls/shell32/tests/shlfileop.c | 191 +++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) diff --git a/dlls/shell32/tests/shlfileop.c b/dlls/shell32/tests/shlfileop.c index 097e99fd113..1f7c390b295 100644 --- a/dlls/shell32/tests/shlfileop.c +++ b/dlls/shell32/tests/shlfileop.c @@ -129,6 +129,15 @@ static void init_shfo_tests(void) CreateDirectoryA("testdir2\\nested", NULL); createTestFile("testdir2\\one.txt"); createTestFile("testdir2\\nested\\two.txt"); + CreateDirectoryA("testdir4", NULL); + CreateDirectoryA("testdir4\\nested", NULL); + CreateDirectoryA("testdir4\\nested\\subnested", NULL); + createTestFile("testdir4\\nested\\2.txt"); + createTestFile("testdir4\\nested\\subnested\\3.txt"); + CreateDirectoryA("testdir6", NULL); + CreateDirectoryA("testdir6\\nested", NULL); + CreateDirectoryA("testdir8", NULL); + CreateDirectoryA("testdir8\\nested", NULL); } /* cleans after tests */ @@ -155,6 +164,38 @@ static void clean_after_shfo_tests(void) RemoveDirectoryA("testdir2\\test4.txt"); RemoveDirectoryA("testdir2\\nested"); RemoveDirectoryA("testdir2"); + DeleteFileA("testdir4\\nested\\subnested\\3.txt"); + DeleteFileA("testdir4\\nested\\two.txt"); + DeleteFileA("testdir4\\nested\\2.txt"); + RemoveDirectoryA("testdir4\\nested\\subnested"); + RemoveDirectoryA("testdir4\\nested"); + RemoveDirectoryA("testdir4"); + DeleteFileA("testdir6\\testdir2\\nested\\two.txt"); + DeleteFileA("testdir6\\testdir2\\one.txt"); + DeleteFileA("testdir6\\nested\\subnested\\3.txt"); + DeleteFileA("testdir6\\nested\\nested\\two.txt"); + DeleteFileA("testdir6\\nested\\two.txt"); + DeleteFileA("testdir6\\nested\\2.txt"); + DeleteFileA("testdir6\\two.txt"); + RemoveDirectoryA("testdir6\\testdir2\\nested"); + RemoveDirectoryA("testdir6\\nested\\subnested"); + RemoveDirectoryA("testdir6\\nested\\nested"); + RemoveDirectoryA("testdir6\\testdir2"); + RemoveDirectoryA("testdir6\\subnested"); + RemoveDirectoryA("testdir6\\nested"); + RemoveDirectoryA("testdir6"); + DeleteFileA("testdir8\\nested\\subnested\\3.txt"); + DeleteFileA("testdir8\\nested\\nested\\subnested\\3.txt"); + DeleteFileA("testdir8\\nested\\nested\\2.txt"); + DeleteFileA("testdir8\\subnested\\3.txt"); + DeleteFileA("testdir8\\nested\\2.txt"); + DeleteFileA("testdir8\\2.txt"); + RemoveDirectoryA("testdir8\\nested\\nested\\subnested"); + RemoveDirectoryA("testdir8\\nested\\nested"); + RemoveDirectoryA("testdir8\\nested\\subnested"); + RemoveDirectoryA("testdir8\\subnested"); + RemoveDirectoryA("testdir8\\nested"); + RemoveDirectoryA("testdir8"); RemoveDirectoryA("c:\\testdir3"); DeleteFileA("nonexistent\\notreal\\test2.txt"); RemoveDirectoryA("nonexistent\\notreal"); @@ -1993,9 +2034,159 @@ static void test_move(void) clean_after_shfo_tests(); init_shfo_tests(); + /* test moving dir to destination containing dir of the same name */ + set_curr_dir_path(from, "testdir2\\nested\0"); + set_curr_dir_path(to, "testdir4\0"); + retval = SHFileOperationA(&shfo); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + + ok(dir_exists("testdir4\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir4\\nested\\two.txt"), "file should exist\n"); + ok(file_exists("testdir4\\nested\\2.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + + /* test moving empty dir to destination containing dir of the same name */ + DeleteFileA("testdir2\\nested\\two.txt"); + set_curr_dir_path(from, "testdir2\\nested\0"); + set_curr_dir_path(to, "testdir4\0"); + retval = SHFileOperationA(&shfo); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + + ok(dir_exists("testdir4\\nested"), "dir should exist\n"); + ok(file_exists("testdir4\\nested\\2.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + + /* test moving multiple dirs to destination containing dir of the same name */ + set_curr_dir_path(from, "testdir2\\nested\0testdir4\\nested\0"); + set_curr_dir_path(to, "testdir6\0"); + retval = SHFileOperationA(&shfo); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + + todo_wine ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); + todo_wine ok(!dir_exists("testdir4\\nested\\subnested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir4\\nested\\subnested\\3.txt"), "file should be moved\n"); + + ok(dir_exists("testdir6\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); + todo_wine ok(file_exists("testdir6\\nested\\2.txt"), "file should exist\n"); + todo_wine ok(dir_exists("testdir6\\nested\\subnested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir6\\nested\\subnested\\3.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + memcpy(&shfo2, &shfo, sizeof(SHFILEOPSTRUCTA)); shfo2.fFlags |= FOF_MULTIDESTFILES; + /* test moving dir to destination containing dir of the same name with FOF_MULTIDESTFILES set */ + set_curr_dir_path(from, "testdir2\\nested\0"); + set_curr_dir_path(to, "testdir6\0"); + retval = SHFileOperationA(&shfo2); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + + ok(!file_exists("testdir6\\nested\\two.txt"), "file should not exist\n"); + ok(dir_exists("testdir6\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir6\\two.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + + /* same as above, without 'nested' in from path */ + set_curr_dir_path(from, "testdir2\0"); + set_curr_dir_path(to, "testdir6\0"); + retval = SHFileOperationA(&shfo2); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + + ok(!file_exists("testdir6\\two.txt"), "file should not exist\n"); + ok(dir_exists("testdir6\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + + /* test moving multiple dirs to multiple destinations containing dir of the same name */ + set_curr_dir_path(from, "testdir2\\nested\0testdir4\\nested\0"); + set_curr_dir_path(to, "testdir6\0testdir8\0"); + retval = SHFileOperationA(&shfo2); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + + todo_wine ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); + todo_wine ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); + + ok(!file_exists("testdir6\\nested\\two.txt"), "file should not exist\n"); + ok(!file_exists("testdir6\\nested\\2.txt"), "file should not exist\n"); + ok(dir_exists("testdir6\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir6\\two.txt"), "file should exist\n"); + + ok(!dir_exists("testdir8\\nested\\subnested"), "dir should not exist\n"); + ok(!file_exists("testdir8\\nested\\subnested\\3.txt"), "file should not exist\n"); + ok(!file_exists("testdir8\\nested\\two.txt"), "file should not exist\n"); + ok(!file_exists("testdir8\\nested\\2.txt"), "file should not exist\n"); + ok(dir_exists("testdir8\\nested"), "dir should exist\n"); + todo_wine ok(dir_exists("testdir8\\subnested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir8\\subnested\\3.txt"), "file should exist\n"); + todo_wine ok(file_exists("testdir8\\2.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + + /* same as above, but include subdir in destinations */ + set_curr_dir_path(from, "testdir2\\nested\0testdir4\\nested\0"); + set_curr_dir_path(to, "testdir6\\nested\0testdir8\\nested\0"); + retval = SHFileOperationA(&shfo2); + ok(!retval, "got %ld\n", retval); + ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); + + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + + ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); + + ok(dir_exists("testdir6\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); + ok(!file_exists("testdir6\\nested\\2.txt"), "file should not exist\n"); + ok(!file_exists("testdir6\\two.txt"), "file should not exist\n"); + + ok(!dir_exists("testdir8\\subnested"), "dir should not exist\n"); + ok(!file_exists("testdir8\\2.txt"), "file should not exist\n"); + ok(!file_exists("testdir8\\nested\\two.txt"), "file should not exist\n"); + ok(dir_exists("testdir8\\nested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir8\\nested\\2.txt"), "file should exist\n"); + todo_wine ok(dir_exists("testdir8\\nested\\subnested"), "dir should exist\n"); + todo_wine ok(file_exists("testdir8\\nested\\subnested\\3.txt"), "file should exist\n"); + + clean_after_shfo_tests(); + init_shfo_tests(); + set_curr_dir_path(from, "test1.txt\0test2.txt\0test4.txt\0"); set_curr_dir_path(to, "test6.txt\0test7.txt\0test8.txt\0"); ok(!SHFileOperationA(&shfo2), "Move many files\n"); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6163
From: Spencer Wallace <spencerwallace(a)esri.com> --- dlls/shell32/shlfileop.c | 58 +++++++++++++++++++++++++--- dlls/shell32/tests/shlfileop.c | 70 +++++++++++++++------------------- 2 files changed, 83 insertions(+), 45 deletions(-) diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c index a7e88c813d2..c6c4646a989 100644 --- a/dlls/shell32/shlfileop.c +++ b/dlls/shell32/shlfileop.c @@ -1382,13 +1382,56 @@ static int delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom) return ERROR_SUCCESS; } -/* moves a file or directory to another directory */ +/* moves a directory to another directory */ +static void move_dir_to_dir(LPSHFILEOPSTRUCTW lpFileOp, const FILE_ENTRY *feFrom, const FILE_ENTRY *feTo) +{ + WCHAR from[MAX_PATH], to[MAX_PATH]; + + /* Windows doesn't combine path when FOF_MULTIDESTFILES is set */ + if (lpFileOp->fFlags & FOF_MULTIDESTFILES) + lstrcpyW(to, feTo->szFullPath); + else + PathCombineW(to, feTo->szFullPath, feFrom->szFilename); + + to[lstrlenW(to) + 1] = '\0'; + + /* If destination directory already exists, append source directory + with wildcard and restart SHFileOperationW */ + if (PathFileExistsW(to)) + { + SHFILEOPSTRUCTW fileOp; + + PathCombineW(from, feFrom->szFullPath, L"*.*"); + from[lstrlenW(from) + 1] = '\0'; + + fileOp = *lpFileOp; + fileOp.pFrom = from; + fileOp.pTo = to; + fileOp.fFlags &= ~FOF_MULTIDESTFILES; /* we know we're moving to one dir */ + + /* Don't ask the user about overwriting files when he accepted to overwrite the + folder. FIXME: this is not exactly what Windows does - e.g. there would be + an additional confirmation for a nested folder */ + fileOp.fFlags |= FOF_NOCONFIRMATION; + + if (!SHFileOperationW(&fileOp)) + RemoveDirectoryW(feFrom->szFullPath); + return; + } + else + { + SHNotifyMoveFileW(feFrom->szFullPath, to); + } +} + +/* moves a file to another directory */ static void move_to_dir(LPSHFILEOPSTRUCTW lpFileOp, const FILE_ENTRY *feFrom, const FILE_ENTRY *feTo) { - WCHAR szDestPath[MAX_PATH]; + WCHAR to[MAX_PATH]; - PathCombineW(szDestPath, feTo->szFullPath, feFrom->szFilename); - SHNotifyMoveFileW(feFrom->szFullPath, szDestPath); + PathCombineW(to, feTo->szFullPath, feFrom->szFilename); + to[lstrlenW(to) + 1] = '\0'; + SHNotifyMoveFileW(feFrom->szFullPath, to); } /* the FO_MOVE operation */ @@ -1448,7 +1491,12 @@ static int move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, const } if (fileDest->bExists && IsAttribDir(fileDest->attributes)) - move_to_dir(lpFileOp, entryToMove, fileDest); + { + if (IsAttribDir(entryToMove->attributes)) + move_dir_to_dir(lpFileOp, entryToMove, fileDest); + else + move_to_dir(lpFileOp, entryToMove, fileDest); + } else SHNotifyMoveFileW(entryToMove->szFullPath, fileDest->szFullPath); } diff --git a/dlls/shell32/tests/shlfileop.c b/dlls/shell32/tests/shlfileop.c index 1f7c390b295..f191a3016c0 100644 --- a/dlls/shell32/tests/shlfileop.c +++ b/dlls/shell32/tests/shlfileop.c @@ -170,28 +170,18 @@ static void clean_after_shfo_tests(void) RemoveDirectoryA("testdir4\\nested\\subnested"); RemoveDirectoryA("testdir4\\nested"); RemoveDirectoryA("testdir4"); - DeleteFileA("testdir6\\testdir2\\nested\\two.txt"); - DeleteFileA("testdir6\\testdir2\\one.txt"); DeleteFileA("testdir6\\nested\\subnested\\3.txt"); - DeleteFileA("testdir6\\nested\\nested\\two.txt"); DeleteFileA("testdir6\\nested\\two.txt"); DeleteFileA("testdir6\\nested\\2.txt"); DeleteFileA("testdir6\\two.txt"); - RemoveDirectoryA("testdir6\\testdir2\\nested"); RemoveDirectoryA("testdir6\\nested\\subnested"); - RemoveDirectoryA("testdir6\\nested\\nested"); - RemoveDirectoryA("testdir6\\testdir2"); RemoveDirectoryA("testdir6\\subnested"); RemoveDirectoryA("testdir6\\nested"); RemoveDirectoryA("testdir6"); DeleteFileA("testdir8\\nested\\subnested\\3.txt"); - DeleteFileA("testdir8\\nested\\nested\\subnested\\3.txt"); - DeleteFileA("testdir8\\nested\\nested\\2.txt"); DeleteFileA("testdir8\\subnested\\3.txt"); DeleteFileA("testdir8\\nested\\2.txt"); DeleteFileA("testdir8\\2.txt"); - RemoveDirectoryA("testdir8\\nested\\nested\\subnested"); - RemoveDirectoryA("testdir8\\nested\\nested"); RemoveDirectoryA("testdir8\\nested\\subnested"); RemoveDirectoryA("testdir8\\subnested"); RemoveDirectoryA("testdir8\\nested"); @@ -2041,11 +2031,11 @@ static void test_move(void) ok(!retval, "got %ld\n", retval); ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); - todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); ok(dir_exists("testdir4\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir4\\nested\\two.txt"), "file should exist\n"); + ok(file_exists("testdir4\\nested\\two.txt"), "file should exist\n"); ok(file_exists("testdir4\\nested\\2.txt"), "file should exist\n"); clean_after_shfo_tests(); @@ -2059,7 +2049,7 @@ static void test_move(void) ok(!retval, "got %ld\n", retval); ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); - todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); ok(dir_exists("testdir4\\nested"), "dir should exist\n"); ok(file_exists("testdir4\\nested\\2.txt"), "file should exist\n"); @@ -2074,19 +2064,19 @@ static void test_move(void) ok(!retval, "got %ld\n", retval); ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); - todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); - todo_wine ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); - todo_wine ok(!dir_exists("testdir4\\nested\\subnested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir4\\nested\\subnested\\3.txt"), "file should be moved\n"); + ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); + ok(!dir_exists("testdir4\\nested\\subnested"), "dir should be moved\n"); + ok(!file_exists("testdir4\\nested\\subnested\\3.txt"), "file should be moved\n"); ok(dir_exists("testdir6\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); - todo_wine ok(file_exists("testdir6\\nested\\2.txt"), "file should exist\n"); - todo_wine ok(dir_exists("testdir6\\nested\\subnested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir6\\nested\\subnested\\3.txt"), "file should exist\n"); + ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); + ok(file_exists("testdir6\\nested\\2.txt"), "file should exist\n"); + ok(dir_exists("testdir6\\nested\\subnested"), "dir should exist\n"); + ok(file_exists("testdir6\\nested\\subnested\\3.txt"), "file should exist\n"); clean_after_shfo_tests(); init_shfo_tests(); @@ -2101,12 +2091,12 @@ static void test_move(void) ok(!retval, "got %ld\n", retval); ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); - todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); ok(!file_exists("testdir6\\nested\\two.txt"), "file should not exist\n"); ok(dir_exists("testdir6\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir6\\two.txt"), "file should exist\n"); + ok(file_exists("testdir6\\two.txt"), "file should exist\n"); clean_after_shfo_tests(); init_shfo_tests(); @@ -2123,7 +2113,7 @@ static void test_move(void) ok(!file_exists("testdir6\\two.txt"), "file should not exist\n"); ok(dir_exists("testdir6\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); + ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); clean_after_shfo_tests(); init_shfo_tests(); @@ -2135,25 +2125,25 @@ static void test_move(void) ok(!retval, "got %ld\n", retval); ok(!shfo.fAnyOperationsAborted, "fAnyOperationsAborted %d\n", shfo.fAnyOperationsAborted); - todo_wine ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); + ok(!dir_exists("testdir2\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir2\\nested\\two.txt"), "file should be moved\n"); - todo_wine ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); - todo_wine ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); + ok(!dir_exists("testdir4\\nested"), "dir should be moved\n"); + ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); ok(!file_exists("testdir6\\nested\\two.txt"), "file should not exist\n"); ok(!file_exists("testdir6\\nested\\2.txt"), "file should not exist\n"); ok(dir_exists("testdir6\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir6\\two.txt"), "file should exist\n"); + ok(file_exists("testdir6\\two.txt"), "file should exist\n"); ok(!dir_exists("testdir8\\nested\\subnested"), "dir should not exist\n"); ok(!file_exists("testdir8\\nested\\subnested\\3.txt"), "file should not exist\n"); ok(!file_exists("testdir8\\nested\\two.txt"), "file should not exist\n"); ok(!file_exists("testdir8\\nested\\2.txt"), "file should not exist\n"); ok(dir_exists("testdir8\\nested"), "dir should exist\n"); - todo_wine ok(dir_exists("testdir8\\subnested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir8\\subnested\\3.txt"), "file should exist\n"); - todo_wine ok(file_exists("testdir8\\2.txt"), "file should exist\n"); + ok(dir_exists("testdir8\\subnested"), "dir should exist\n"); + ok(file_exists("testdir8\\subnested\\3.txt"), "file should exist\n"); + ok(file_exists("testdir8\\2.txt"), "file should exist\n"); clean_after_shfo_tests(); init_shfo_tests(); @@ -2172,7 +2162,7 @@ static void test_move(void) ok(!file_exists("testdir4\\nested\\2.txt"), "file should be moved\n"); ok(dir_exists("testdir6\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); + ok(file_exists("testdir6\\nested\\two.txt"), "file should exist\n"); ok(!file_exists("testdir6\\nested\\2.txt"), "file should not exist\n"); ok(!file_exists("testdir6\\two.txt"), "file should not exist\n"); @@ -2180,9 +2170,9 @@ static void test_move(void) ok(!file_exists("testdir8\\2.txt"), "file should not exist\n"); ok(!file_exists("testdir8\\nested\\two.txt"), "file should not exist\n"); ok(dir_exists("testdir8\\nested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir8\\nested\\2.txt"), "file should exist\n"); - todo_wine ok(dir_exists("testdir8\\nested\\subnested"), "dir should exist\n"); - todo_wine ok(file_exists("testdir8\\nested\\subnested\\3.txt"), "file should exist\n"); + ok(file_exists("testdir8\\nested\\2.txt"), "file should exist\n"); + ok(dir_exists("testdir8\\nested\\subnested"), "dir should exist\n"); + ok(file_exists("testdir8\\nested\\subnested\\3.txt"), "file should exist\n"); clean_after_shfo_tests(); init_shfo_tests(); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/6163
participants (2)
-
Spencer Wallace -
Spencer Wallace (@spencerwallace)