[PATCH][WIP][CONFTEST] kernel32/tests: Add extra ReplaceFileW tests
John Thomson
git at johnthomson.fastmail.com.au
Wed Apr 8 06:59:31 CDT 2020
Troubleshooting ReplaceFileW failing with
ERROR_UNABLE_TO_REMOVE_REPLACED for inplace, without backup move
STATUS_CANNOT_DELETE from create_file
MoveFileExW
MoveFileWithProgressW
ReplaceFileW
GetTempPathW
MoveFileWithProgressW replace tempfile
DeleteFileW tempfile
dlls/ntdll/file.c
status = NtCreateFile(...
FILE_OPEN, //disposition
FILE_DELETE_ON_CLOSE | FILE_NON_DIRECTORY_FILE, //options)
server/file.c
create_file
case FILE_OPEN: flags = 0; break;
server/fd.c
check_sharing
open_fd
if ((options & FILE_DELETE_ON_CLOSE) && !(flags & O_CREAT) &&
!(st.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH)))
Signed-off-by: John Thomson <git at johnthomson.fastmail.com.au>
---
dlls/kernel32/tests/file.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 29620654bd..2ddabed8a4 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -3880,8 +3880,11 @@ static void test_ReplaceFileW(void)
ret = GetTempFileNameW(temp_path, prefix, 0, replacement);
ok(ret != 0, "GetTempFileNameW error (replacement) %d\n", GetLastError());
ret = pReplaceFileW(replaced, replacement, NULL, 0, 0, 0);
- ok(ret || GetLastError() == ERROR_ACCESS_DENIED,
- "ReplaceFileW: error %d\n", GetLastError());
+ ok(ret || GetLastError() == ERROR_ACCESS_DENIED ||
+ GetLastError() == ERROR_UNABLE_TO_REMOVE_REPLACED ||
+ GetLastError() == ERROR_UNABLE_TO_MOVE_REPLACEMENT ||
+ GetLastError() == ERROR_UNABLE_TO_MOVE_REPLACEMENT_2,
+ "ReplaceFileW: ret %d error %d\n", ret, GetLastError());
ret = GetTempFileNameW(temp_path, prefix, 0, replacement);
ok(ret != 0, "GetTempFileNameW error (replacement) %d\n", GetLastError());
--
2.26.0
More information about the wine-devel
mailing list