From: Roman Pišl rpisl@seznam.cz
--- dlls/kernel32/tests/file.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c index 68b9f53700e..461e4621a8a 100644 --- a/dlls/kernel32/tests/file.c +++ b/dlls/kernel32/tests/file.c @@ -4202,6 +4202,27 @@ static void test_ReplaceFileW(void) broken(GetLastError() == ERROR_ACCESS_DENIED), /* win2k */ "DeleteFileW: error (backup) %ld\n", GetLastError()); } + + /* test with forward slashes in the destination and use + * Z:/tmp in Wine to ensure the root is not writable + */ + ret = GetFileAttributesW(L"Z:/tmp"); + if (ret != INVALID_FILE_ATTRIBUTES && (ret & FILE_ATTRIBUTE_DIRECTORY)) + wcscpy(temp_path, L"Z:/tmp"); + + ret = GetTempFileNameW(temp_path, prefix, 0, replaced); + ok(ret, "GetTempFileNameW error (replaced) %ld\n", GetLastError()); + for (int i = 0; i < wcslen(replaced); i++) + if (replaced[i] == L'\') replaced[i] = L'/'; + + ret = GetTempFileNameW(temp_path, prefix, 0, replacement); + ok(ret, "GetTempFileNameW error (replacement) %ld\n", GetLastError()); + ret = pReplaceFileW(replaced, replacement, NULL, 0, 0, 0); + todo_wine + ok(ret, "ReplaceFileW: error %ld\n", GetLastError()); + + DeleteFileW(replaced); + DeleteFileW(replacement); }
static void test_CreateFile(void)