mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
3931c93628
Get the guard with STAGING_WRITECOPY env var back as the patchset is currently causing some regressions.
200 lines
11 KiB
Diff
200 lines
11 KiB
Diff
From dacc9e9e6a5759cfd00ac9653a08ac78e604f243 Mon Sep 17 00:00:00 2001
|
|
From: Andrew Wesie <awesie@gmail.com>
|
|
Date: Mon, 27 Apr 2020 15:32:22 +0300
|
|
Subject: [PATCH] kernel32/tests, psapi/tests: Update tests.
|
|
|
|
---
|
|
dlls/kernel32/tests/virtual.c | 19 ++----------------
|
|
dlls/psapi/tests/psapi_main.c | 38 +++++++++++++++++++++++------------
|
|
2 files changed, 27 insertions(+), 30 deletions(-)
|
|
|
|
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c
|
|
index f576d132d8b..70824d771ed 100644
|
|
--- a/dlls/kernel32/tests/virtual.c
|
|
+++ b/dlls/kernel32/tests/virtual.c
|
|
@@ -3572,9 +3572,7 @@ static void test_CreateFileMapping_protection(void)
|
|
SetLastError(0xdeadbeef);
|
|
ret = VirtualQuery(base, &info, sizeof(info));
|
|
ok(ret, "VirtualQuery failed %d\n", GetLastError());
|
|
- /* FIXME: remove the condition below once Wine is fixed */
|
|
- todo_wine_if (td[i].prot == PAGE_WRITECOPY || td[i].prot == PAGE_EXECUTE_WRITECOPY)
|
|
- ok(info.Protect == td[i].prot_after_write, "%d: got %#x != expected %#x\n", i, info.Protect, td[i].prot_after_write);
|
|
+ ok(info.Protect == td[i].prot_after_write, "%d: got %#x != expected %#x\n", i, info.Protect, td[i].prot_after_write);
|
|
}
|
|
}
|
|
else
|
|
@@ -3588,9 +3586,7 @@ static void test_CreateFileMapping_protection(void)
|
|
SetLastError(0xdeadbeef);
|
|
ret = VirtualProtect(base, si.dwPageSize, PAGE_NOACCESS, &old_prot);
|
|
ok(ret, "%d: VirtualProtect error %d\n", i, GetLastError());
|
|
- /* FIXME: remove the condition below once Wine is fixed */
|
|
- todo_wine_if (td[i].prot == PAGE_WRITECOPY || td[i].prot == PAGE_EXECUTE_WRITECOPY)
|
|
- ok(old_prot == td[i].prot_after_write, "%d: got %#x != expected %#x\n", i, old_prot, td[i].prot_after_write);
|
|
+ ok(old_prot == td[i].prot_after_write, "%d: got %#x != expected %#x\n", i, old_prot, td[i].prot_after_write);
|
|
|
|
UnmapViewOfFile(base);
|
|
}
|
|
@@ -3943,15 +3939,12 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags, BOOL readonly )
|
|
continue;
|
|
}
|
|
|
|
- todo_wine_if(readonly && page_prot[k] == PAGE_WRITECOPY && view[j].prot != PAGE_WRITECOPY)
|
|
ok(ret, "VirtualProtect error %d, map %#x, view %#x, requested prot %#x\n", GetLastError(), page_prot[i], view[j].prot, page_prot[k]);
|
|
- todo_wine_if(readonly && page_prot[k] == PAGE_WRITECOPY && view[j].prot != PAGE_WRITECOPY)
|
|
ok(old_prot == prev_prot, "got %#x, expected %#x\n", old_prot, prev_prot);
|
|
prev_prot = actual_prot;
|
|
|
|
ret = VirtualQuery(base, &info, sizeof(info));
|
|
ok(ret, "%d: VirtualQuery failed %d\n", j, GetLastError());
|
|
- todo_wine_if(readonly && page_prot[k] == PAGE_WRITECOPY && view[j].prot != PAGE_WRITECOPY)
|
|
ok(info.Protect == actual_prot,
|
|
"VirtualProtect wrong prot, map %#x, view %#x, requested prot %#x got %#x\n",
|
|
page_prot[i], view[j].prot, page_prot[k], info.Protect );
|
|
@@ -4006,15 +3999,12 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags, BOOL readonly )
|
|
if (!anon_mapping && is_compatible_protection(alloc_prot, PAGE_WRITECOPY))
|
|
{
|
|
ret = VirtualProtect(base, sec_flags & SEC_IMAGE ? si.dwPageSize : 2*si.dwPageSize, PAGE_WRITECOPY, &old_prot);
|
|
- todo_wine_if(readonly && view[j].prot != PAGE_WRITECOPY)
|
|
ok(ret, "VirtualProtect error %d, map %#x, view %#x\n", GetLastError(), page_prot[i], view[j].prot);
|
|
if (ret) *(DWORD*)base = 0xdeadbeef;
|
|
ret = VirtualQuery(base, &info, sizeof(info));
|
|
ok(ret, "%d: VirtualQuery failed %d\n", j, GetLastError());
|
|
- todo_wine
|
|
ok(info.Protect == PAGE_READWRITE, "VirtualProtect wrong prot, map %#x, view %#x got %#x\n",
|
|
page_prot[i], view[j].prot, info.Protect );
|
|
- todo_wine_if (!(sec_flags & SEC_IMAGE))
|
|
ok(info.RegionSize == si.dwPageSize, "wrong region size %#lx after write, map %#x, view %#x got %#x\n",
|
|
info.RegionSize, page_prot[i], view[j].prot, info.Protect );
|
|
|
|
@@ -4025,7 +4015,6 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags, BOOL readonly )
|
|
{
|
|
ret = VirtualQuery((char*)base + si.dwPageSize, &info, sizeof(info));
|
|
ok(ret, "%d: VirtualQuery failed %d\n", j, GetLastError());
|
|
- todo_wine_if(readonly && view[j].prot != PAGE_WRITECOPY)
|
|
ok(info.Protect == PAGE_WRITECOPY, "wrong prot, map %#x, view %#x got %#x\n",
|
|
page_prot[i], view[j].prot, info.Protect);
|
|
}
|
|
@@ -4045,14 +4034,11 @@ static void test_mapping( HANDLE hfile, DWORD sec_flags, BOOL readonly )
|
|
continue;
|
|
}
|
|
|
|
- todo_wine_if(readonly && page_prot[k] == PAGE_WRITECOPY && view[j].prot != PAGE_WRITECOPY)
|
|
ok(ret, "VirtualProtect error %d, map %#x, view %#x, requested prot %#x\n", GetLastError(), page_prot[i], view[j].prot, page_prot[k]);
|
|
- todo_wine_if(readonly && page_prot[k] == PAGE_WRITECOPY && view[j].prot != PAGE_WRITECOPY)
|
|
ok(old_prot == prev_prot, "got %#x, expected %#x\n", old_prot, prev_prot);
|
|
|
|
ret = VirtualQuery(base, &info, sizeof(info));
|
|
ok(ret, "%d: VirtualQuery failed %d\n", j, GetLastError());
|
|
- todo_wine_if( map_prot_written( page_prot[k] ) != actual_prot )
|
|
ok(info.Protect == map_prot_written( page_prot[k] ),
|
|
"VirtualProtect wrong prot, map %#x, view %#x, requested prot %#x got %#x\n",
|
|
page_prot[i], view[j].prot, page_prot[k], info.Protect );
|
|
@@ -4093,7 +4079,6 @@ static void test_mappings(void)
|
|
SetFilePointer(hfile, 0, NULL, FILE_BEGIN);
|
|
ok(ReadFile(hfile, &data, sizeof(data), &num_bytes, NULL), "ReadFile failed\n");
|
|
ok(num_bytes == sizeof(data), "num_bytes = %d\n", num_bytes);
|
|
- todo_wine
|
|
ok(!data, "data = %x\n", data);
|
|
|
|
CloseHandle( hfile );
|
|
diff --git a/dlls/psapi/tests/psapi_main.c b/dlls/psapi/tests/psapi_main.c
|
|
index da7524dd60a..eb52fc690cf 100644
|
|
--- a/dlls/psapi/tests/psapi_main.c
|
|
+++ b/dlls/psapi/tests/psapi_main.c
|
|
@@ -791,7 +791,7 @@ free_page:
|
|
}
|
|
|
|
static void check_QueryWorkingSetEx(PVOID addr, const char *desc, DWORD expected_valid,
|
|
- DWORD expected_protection, DWORD expected_shared, BOOL todo, BOOL todo_shared)
|
|
+ DWORD expected_protection, DWORD expected_shared, BOOL todo)
|
|
{
|
|
PSAPI_WORKING_SET_EX_INFORMATION info;
|
|
BOOL ret;
|
|
@@ -814,7 +814,6 @@ static void check_QueryWorkingSetEx(PVOID addr, const char *desc, DWORD expected
|
|
ok(info.VirtualAttributes.LargePage == 0, "%s expected LargePage=0 but got %u\n",
|
|
desc, info.VirtualAttributes.LargePage);
|
|
|
|
- todo_wine_if(todo_shared)
|
|
ok(info.VirtualAttributes.Shared == expected_shared || broken(!info.VirtualAttributes.Valid) /* w2003 */,
|
|
"%s expected Shared=%u but got %u\n", desc, expected_shared, info.VirtualAttributes.Shared);
|
|
if (info.VirtualAttributes.Valid && info.VirtualAttributes.Shared)
|
|
@@ -831,6 +830,8 @@ static void test_QueryWorkingSetEx(void)
|
|
DWORD prot;
|
|
BOOL ret;
|
|
|
|
+ static char tmp_data[0x2000] = { 0x41 };
|
|
+
|
|
if (pQueryWorkingSetEx == NULL)
|
|
{
|
|
win_skip("QueryWorkingSetEx not found, skipping tests\n");
|
|
@@ -838,44 +839,55 @@ static void test_QueryWorkingSetEx(void)
|
|
}
|
|
|
|
addr = GetModuleHandleA(NULL);
|
|
- check_QueryWorkingSetEx(addr, "exe", 1, PAGE_READONLY, 1, FALSE, TRUE);
|
|
+ check_QueryWorkingSetEx(addr, "exe", 1, PAGE_READONLY, 1, FALSE);
|
|
|
|
ret = VirtualProtect(addr, 0x1000, PAGE_NOACCESS, &prot);
|
|
ok(ret, "VirtualProtect failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "exe,noaccess", 0, 0, 1, FALSE, TRUE);
|
|
+ check_QueryWorkingSetEx(addr, "exe,noaccess", 0, 0, 1, FALSE);
|
|
|
|
ret = VirtualProtect(addr, 0x1000, prot, &prot);
|
|
ok(ret, "VirtualProtect failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "exe,readonly1", 0, 0, 1, TRUE, TRUE);
|
|
+ check_QueryWorkingSetEx(addr, "exe,readonly1", 0, 0, 1, TRUE);
|
|
|
|
*(volatile char *)addr;
|
|
+ check_QueryWorkingSetEx(addr, "exe,readonly2", 1, PAGE_READONLY, 1, FALSE);
|
|
+
|
|
+ ret = VirtualProtect(addr, 0x1000, PAGE_EXECUTE_READWRITE, &prot);
|
|
ok(ret, "VirtualProtect failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "exe,readonly2", 1, PAGE_READONLY, 1, FALSE, TRUE);
|
|
+ check_QueryWorkingSetEx(addr, "exe,readwrite1", 1, PAGE_EXECUTE_WRITECOPY, 1, FALSE);
|
|
+
|
|
+ *(volatile char *)addr = 1;
|
|
+ check_QueryWorkingSetEx(addr, "exe,readwrite2", 1, PAGE_EXECUTE_READWRITE, 0, FALSE);
|
|
+
|
|
+ *(volatile char *)&tmp_data[0x1000];
|
|
+ check_QueryWorkingSetEx(tmp_data + 0x1000, "exe,data1", 1, PAGE_WRITECOPY, 1, FALSE);
|
|
+ tmp_data[0x1000] = 1;
|
|
+ check_QueryWorkingSetEx(tmp_data + 0x1000, "exe,data2", 1, PAGE_READWRITE, 0, FALSE);
|
|
|
|
addr = VirtualAlloc(NULL, 0x1000, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
|
|
ok(addr != NULL, "VirtualAlloc failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "valloc", 0, 0, 0, FALSE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc", 0, 0, 0, FALSE);
|
|
|
|
*(volatile char *)addr;
|
|
- check_QueryWorkingSetEx(addr, "valloc,read", 1, PAGE_READWRITE, 0, FALSE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc,read", 1, PAGE_READWRITE, 0, FALSE);
|
|
|
|
*(volatile char *)addr = 0x42;
|
|
- check_QueryWorkingSetEx(addr, "valloc,write", 1, PAGE_READWRITE, 0, FALSE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc,write", 1, PAGE_READWRITE, 0, FALSE);
|
|
|
|
ret = VirtualProtect(addr, 0x1000, PAGE_NOACCESS, &prot);
|
|
ok(ret, "VirtualProtect failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "valloc,noaccess", 0, 0, 0, FALSE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc,noaccess", 0, 0, 0, FALSE);
|
|
|
|
ret = VirtualProtect(addr, 0x1000, prot, &prot);
|
|
ok(ret, "VirtualProtect failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "valloc,readwrite1", 0, 0, 0, TRUE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc,readwrite1", 0, 0, 0, TRUE);
|
|
|
|
*(volatile char *)addr;
|
|
- check_QueryWorkingSetEx(addr, "valloc,readwrite2", 1, PAGE_READWRITE, 0, FALSE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc,readwrite2", 1, PAGE_READWRITE, 0, FALSE);
|
|
|
|
ret = VirtualFree(addr, 0, MEM_RELEASE);
|
|
ok(ret, "VirtualFree failed with %d\n", GetLastError());
|
|
- check_QueryWorkingSetEx(addr, "valloc,free", FALSE, 0, 0, FALSE, FALSE);
|
|
+ check_QueryWorkingSetEx(addr, "valloc,free", FALSE, 0, 0, FALSE);
|
|
}
|
|
|
|
START_TEST(psapi_main)
|
|
--
|
|
2.26.2
|
|
|