Nikolay Sivov : kernel32/tests: Add some tests for setting file times.
Alexandre Julliard
julliard at winehq.org
Fri Aug 9 14:49:31 CDT 2019
Module: wine
Branch: master
Commit: 70189853e2f0284cfd185069e4f5ead4ba0fa1ca
URL: https://source.winehq.org/git/wine.git/?a=commit;h=70189853e2f0284cfd185069e4f5ead4ba0fa1ca
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Aug 9 09:50:32 2019 +0300
kernel32/tests: Add some tests for setting file times.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/tests/file.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 63a67ca..a2511be 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -5065,6 +5065,17 @@ todo_wine
ok(ret, "Failed to get basic info, error %d.\n", GetLastError());
ok(atime.QuadPart + 1 == basicinfo.LastAccessTime.QuadPart, "Unexpected access time.\n");
+ memset(&basicinfo, 0, sizeof(basicinfo));
+ basicinfo.LastAccessTime.QuadPart = -1;
+ ret = pSetFileInformationByHandle(file, FileBasicInfo, &basicinfo, sizeof(basicinfo));
+todo_wine
+ ok(ret, "Failed to set basic info, error %d.\n", GetLastError());
+
+ memset(&basicinfo, 0, sizeof(basicinfo));
+ ret = pGetFileInformationByHandleEx(file, FileBasicInfo, &basicinfo, sizeof(basicinfo));
+ ok(ret, "Failed to get basic info, error %d.\n", GetLastError());
+ ok(atime.QuadPart + 1 == basicinfo.LastAccessTime.QuadPart, "Unexpected access time.\n");
+
dispinfo.DeleteFile = TRUE;
ret = pSetFileInformationByHandle(file, FileDispositionInfo, &dispinfo, sizeof(dispinfo));
ok(ret, "setting FileDispositionInfo failed, error %d\n", GetLastError());
@@ -5357,6 +5368,50 @@ static void test_find_file_stream(void)
ok(error == ERROR_HANDLE_EOF, "Expected ERROR_HANDLE_EOF, got %d\n", error);
}
+static void test_SetFileTime(void)
+{
+ static const WCHAR prefix[] = {'p','f','x',0};
+ WCHAR path[MAX_PATH], temp_path[MAX_PATH];
+ FILETIME ft1, ft2;
+ DWORD ret, len;
+ HANDLE hfile;
+
+ ret = GetTempPathW(MAX_PATH, temp_path);
+ ok(ret != 0, "GetTempPathW error %d\n", GetLastError());
+ ok(ret < MAX_PATH, "temp path should fit into MAX_PATH\n");
+
+ ret = GetTempFileNameW(temp_path, prefix, 0, path);
+ ok(ret != 0, "GetTempFileNameW error %d\n", GetLastError());
+
+ hfile = CreateFileW(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_FLAG_DELETE_ON_CLOSE, 0);
+ ok(hfile != INVALID_HANDLE_VALUE, "failed to open source file\n");
+ ret = WriteFile(hfile, prefix, sizeof(prefix), &len, NULL );
+ ok(ret && len == sizeof(prefix), "WriteFile error %d\n", GetLastError());
+ ok(GetFileSize(hfile, NULL) == sizeof(prefix), "source file has wrong size\n");
+
+ ret = GetFileTime(hfile, NULL, NULL, &ft1);
+ ok(ret, "GetFileTime error %d\n", GetLastError());
+ ft2 = ft1;
+ ft2.dwLowDateTime -= 600000000; /* 60 second */
+ ret = SetFileTime(hfile, NULL, NULL, &ft2);
+ ok(ret, "SetFileTime error %d\n", GetLastError());
+ memset(&ft2, 0, sizeof(ft2));
+ ret = GetFileTime(hfile, NULL, NULL, &ft2); /* get the actual time back */
+ ok(ret, "GetFileTime error %d\n", GetLastError());
+ ok(memcmp(&ft1, &ft2, sizeof(ft1)), "Unexpected write time.\n");
+
+ memset(&ft1, 0xff, sizeof(ft1));
+ ret = SetFileTime(hfile, NULL, NULL, &ft1);
+todo_wine
+ ok(ret, "SetFileTime error %d\n", GetLastError());
+ memset(&ft1, 0, sizeof(ft1));
+ ret = GetFileTime(hfile, NULL, NULL, &ft1); /* get the actual time back */
+ ok(ret, "GetFileTime error %d\n", GetLastError());
+ ok(!memcmp(&ft1, &ft2, sizeof(ft1)), "Unexpected write time.\n");
+
+ CloseHandle(hfile);
+}
+
START_TEST(file)
{
char temp_path[MAX_PATH];
@@ -5429,4 +5484,5 @@ START_TEST(file)
test_overlapped_read();
test_file_readonly_access();
test_find_file_stream();
+ test_SetFileTime();
}
More information about the wine-cvs
mailing list