Rebase against f4790714fe69df7701cff666d6b5ab4be049cbf6.

This commit is contained in:
Sebastian Lackner
2015-05-20 06:00:09 +02:00
parent 9573b57d3c
commit 349ba2df2a
11 changed files with 238 additions and 350 deletions

View File

@ -1,4 +1,4 @@
From 18a7daf004ad8d8d773dfbcaf390c9fad2ebfaed Mon Sep 17 00:00:00 2001
From 3762d0ebf9a69e4d53344bbed116ce370c2de7a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 26 Feb 2015 06:41:26 +0100
Subject: kernel32: Add support for progress callback in CopyFileEx.
@ -9,7 +9,7 @@ Subject: kernel32: Add support for progress callback in CopyFileEx.
2 files changed, 64 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c
index 179c8e0..df98f26 100644
index eae2ca9..a3add7e 100644
--- a/dlls/kernel32/path.c
+++ b/dlls/kernel32/path.c
@@ -1112,6 +1112,9 @@ BOOL WINAPI CopyFileExW(LPCWSTR source, LPCWSTR dest,
@ -116,7 +116,7 @@ index 179c8e0..df98f26 100644
}
ret = TRUE;
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 0a8e0e2..ffebd8d 100644
index 64b0b8b..d91cab4 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1131,23 +1131,17 @@ static void test_CopyFileEx(void)
@ -127,7 +127,7 @@ index 0a8e0e2..ffebd8d 100644
ok(!retok, "CopyFileExA unexpectedly succeeded\n");
- todo_wine
ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError());
ok(GetFileAttributesA( dest ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n");
ok(GetFileAttributesA(dest) != INVALID_FILE_ATTRIBUTES, "file was deleted\n");
hfile = CreateFileA(dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, OPEN_EXISTING, 0, 0);
@ -140,7 +140,7 @@ index 0a8e0e2..ffebd8d 100644
- todo_wine
ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError());
- todo_wine
ok(GetFileAttributesA( dest ) == INVALID_FILE_ATTRIBUTES, "file was not deleted\n");
ok(GetFileAttributesA(dest) == INVALID_FILE_ATTRIBUTES, "file was not deleted\n");
ret = DeleteFileA(source);
--

View File

@ -1,88 +0,0 @@
From 83deea381c8297ff55f69b04765b6f6f8a012120 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 9 May 2015 00:26:25 +0200
Subject: kernel32/tests: Add tests for delete behaviour of CopyFileEx.
---
dlls/kernel32/tests/file.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 9a6e972..0a8e0e2 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -1099,6 +1099,63 @@ static void test_CopyFile2(void)
DeleteFileW(dest);
}
+static DWORD WINAPI copy_progress_cb(LARGE_INTEGER total_size, LARGE_INTEGER total_transferred,
+ LARGE_INTEGER stream_size, LARGE_INTEGER stream_transferred,
+ DWORD stream, DWORD reason, HANDLE source, HANDLE dest, LPVOID userdata)
+{
+ ok(reason == CALLBACK_STREAM_SWITCH, "expected CALLBACK_STREAM_SWITCH, got %u\n", reason);
+ CloseHandle(userdata);
+ return PROGRESS_CANCEL;
+}
+
+static void test_CopyFileEx(void)
+{
+ char temp_path[MAX_PATH];
+ char source[MAX_PATH], dest[MAX_PATH];
+ static const char prefix[] = "pfx";
+ HANDLE hfile;
+ DWORD ret;
+ BOOL retok;
+
+ ret = GetTempPathA(MAX_PATH, temp_path);
+ ok(ret != 0, "GetTempPathA error %d\n", GetLastError());
+ ok(ret < MAX_PATH, "temp path should fit into MAX_PATH\n");
+
+ ret = GetTempFileNameA(temp_path, prefix, 0, source);
+ ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError());
+
+ ret = GetTempFileNameA(temp_path, prefix, 0, dest);
+ ok(ret != 0, "GetTempFileNameA error %d\n", GetLastError());
+
+ hfile = CreateFileA(dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
+ ok(hfile != INVALID_HANDLE_VALUE, "failed to open destination file, error %d\n", GetLastError());
+ SetLastError(0xdeadbeef);
+ retok = CopyFileExA(source, dest, copy_progress_cb, hfile, NULL, 0);
+ todo_wine
+ ok(!retok, "CopyFileExA unexpectedly succeeded\n");
+ todo_wine
+ ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError());
+ ok(GetFileAttributesA( dest ) != INVALID_FILE_ATTRIBUTES, "file was deleted\n");
+
+ hfile = CreateFileA(dest, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_DELETE,
+ NULL, OPEN_EXISTING, 0, 0);
+ todo_wine
+ ok(hfile != INVALID_HANDLE_VALUE, "failed to open destination file, error %d\n", GetLastError());
+ SetLastError(0xdeadbeef);
+ retok = CopyFileExA(source, dest, copy_progress_cb, hfile, NULL, 0);
+ todo_wine
+ ok(!retok, "CopyFileExA unexpectedly succeeded\n");
+ todo_wine
+ ok(GetLastError() == ERROR_REQUEST_ABORTED, "expected ERROR_REQUEST_ABORTED, got %d\n", GetLastError());
+ todo_wine
+ ok(GetFileAttributesA( dest ) == INVALID_FILE_ATTRIBUTES, "file was not deleted\n");
+
+ ret = DeleteFileA(source);
+ ok(ret, "DeleteFileA failed with error %d\n", GetLastError());
+ ret = DeleteFileA(dest);
+ ok(!ret, "DeleteFileA unexpectedly succeeded\n");
+}
+
/*
* Debugging routine to dump a buffer in a hexdump-like fashion.
*/
@@ -4447,6 +4504,7 @@ START_TEST(file)
test_CopyFileA();
test_CopyFileW();
test_CopyFile2();
+ test_CopyFileEx();
test_CreateFile();
test_CreateFileA();
test_CreateFileW();
--
2.4.0