From: John Thomson Subject: [PATCH][WIP][CONFTEST] kernel32/tests: Add extra ReplaceFileW tests Message-Id: <20200408115931.31791-1-git@johnthomson.fastmail.com.au> Date: Wed, 8 Apr 2020 21:59:31 +1000 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 --- 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