Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
This also fixes a few messages that did not show the loop counter.
---
dlls/kernel32/tests/loader.c | 98 ++++++++++++++++++------------------
1 file changed, 50 insertions(+), 48 deletions(-)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index ea4048d5634..f30a113f5a3 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -896,6 +896,7 @@ static void test_Loader(void)
for (i = 0; i < ARRAY_SIZE(td); i++)
{
+ winetest_push_context("%d", i);
nt_header = nt_header_template;
nt_header.FileHeader.NumberOfSections = td[i].number_of_sections;
nt_header.FileHeader.SizeOfOptionalHeader = td[i].size_of_optional_header;
@@ -915,56 +916,55 @@ static void test_Loader(void)
MEMORY_BASIC_INFORMATION info;
void *ptr;
- ok( td[i].errors[0] == ERROR_SUCCESS, "%d: should have failed\n", i );
+ ok( td[i].errors[0] == ERROR_SUCCESS, "should have failed\n" );
SetLastError(0xdeadbeef);
size = VirtualQuery(hlib, &info, sizeof(info));
ok(size == sizeof(info),
"%d: VirtualQuery error %d\n", i, GetLastError());
- ok(info.BaseAddress == hlib, "%d: %p != %p\n", i, info.BaseAddress, hlib);
- ok(info.AllocationBase == hlib, "%d: %p != %p\n", i, info.AllocationBase, hlib);
- ok(info.AllocationProtect == PAGE_EXECUTE_WRITECOPY, "%d: %x != PAGE_EXECUTE_WRITECOPY\n", i, info.AllocationProtect);
- ok(info.RegionSize == ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size), "%d: got %lx != expected %x\n",
- i, info.RegionSize, ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size));
- ok(info.State == MEM_COMMIT, "%d: %x != MEM_COMMIT\n", i, info.State);
+ ok(info.BaseAddress == hlib, "%p != %p\n", info.BaseAddress, hlib);
+ ok(info.AllocationBase == hlib, "%p != %p\n", info.AllocationBase, hlib);
+ ok(info.AllocationProtect == PAGE_EXECUTE_WRITECOPY, "%x != PAGE_EXECUTE_WRITECOPY\n", info.AllocationProtect);
+ ok(info.RegionSize == ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size), "got %lx != expected %x\n",
+ info.RegionSize, ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size));
+ ok(info.State == MEM_COMMIT, "%x != MEM_COMMIT\n", info.State);
if (nt_header.OptionalHeader.SectionAlignment < page_size)
- ok(info.Protect == PAGE_EXECUTE_WRITECOPY, "%d: %x != PAGE_EXECUTE_WRITECOPY\n", i, info.Protect);
+ ok(info.Protect == PAGE_EXECUTE_WRITECOPY, "%x != PAGE_EXECUTE_WRITECOPY\n", info.Protect);
else
- ok(info.Protect == PAGE_READONLY, "%d: %x != PAGE_READONLY\n", i, info.Protect);
- ok(info.Type == SEC_IMAGE, "%d: %x != SEC_IMAGE\n", i, info.Type);
+ ok(info.Protect == PAGE_READONLY, "%x != PAGE_READONLY\n", info.Protect);
+ ok(info.Type == SEC_IMAGE, "%x != SEC_IMAGE\n", info.Type);
SetLastError(0xdeadbeef);
ptr = VirtualAlloc(hlib, page_size, MEM_COMMIT, info.Protect);
- ok(!ptr, "%d: VirtualAlloc should fail\n", i);
- ok(GetLastError() == ERROR_ACCESS_DENIED, "%d: expected ERROR_ACCESS_DENIED, got %d\n", i, GetLastError());
+ ok(!ptr, "VirtualAlloc should fail\n");
+ ok(GetLastError() == ERROR_ACCESS_DENIED, "expected ERROR_ACCESS_DENIED, got %d\n", GetLastError());
SetLastError(0xdeadbeef);
size = VirtualQuery((char *)hlib + info.RegionSize, &info, sizeof(info));
- ok(size == sizeof(info),
- "%d: VirtualQuery error %d\n", i, GetLastError());
+ ok(size == sizeof(info), "VirtualQuery error %d\n", GetLastError());
if (nt_header.OptionalHeader.SectionAlignment == page_size ||
nt_header.OptionalHeader.SectionAlignment == nt_header.OptionalHeader.FileAlignment)
{
- ok(info.BaseAddress == (char *)hlib + ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size), "%d: got %p != expected %p\n",
- i, info.BaseAddress, (char *)hlib + ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size));
- ok(info.AllocationBase == 0, "%d: %p != 0\n", i, info.AllocationBase);
- ok(info.AllocationProtect == 0, "%d: %x != 0\n", i, info.AllocationProtect);
+ ok(info.BaseAddress == (char *)hlib + ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size), "got %p != expected %p\n",
+ info.BaseAddress, (char *)hlib + ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size));
+ ok(info.AllocationBase == 0, "%p != 0\n", info.AllocationBase);
+ ok(info.AllocationProtect == 0, "%x != 0\n", info.AllocationProtect);
/*ok(info.RegionSize == not_practical_value, "%d: %lx != not_practical_value\n", i, info.RegionSize);*/
- ok(info.State == MEM_FREE, "%d: %x != MEM_FREE\n", i, info.State);
- ok(info.Type == 0, "%d: %x != 0\n", i, info.Type);
- ok(info.Protect == PAGE_NOACCESS, "%d: %x != PAGE_NOACCESS\n", i, info.Protect);
+ ok(info.State == MEM_FREE, "%x != MEM_FREE\n", info.State);
+ ok(info.Type == 0, "%x != 0\n", info.Type);
+ ok(info.Protect == PAGE_NOACCESS, "%x != PAGE_NOACCESS\n", info.Protect);
}
else
{
- ok(info.Protect == PAGE_EXECUTE_WRITECOPY, "%d: %x != PAGE_EXECUTE_WRITECOPY\n", i, info.Protect);
- ok(info.BaseAddress == hlib, "%d: got %p != expected %p\n", i, info.BaseAddress, hlib);
- ok(info.AllocationBase == hlib, "%d: %p != %p\n", i, info.AllocationBase, hlib);
- ok(info.AllocationProtect == PAGE_EXECUTE_WRITECOPY, "%d: %x != PAGE_EXECUTE_WRITECOPY\n", i, info.AllocationProtect);
- ok(info.RegionSize == ALIGN_SIZE(file_size, page_size), "%d: got %lx != expected %x\n",
- i, info.RegionSize, ALIGN_SIZE(file_size, page_size));
- ok(info.State == MEM_COMMIT, "%d: %x != MEM_COMMIT\n", i, info.State);
- ok(info.Protect == PAGE_READONLY, "%d: %x != PAGE_READONLY\n", i, info.Protect);
- ok(info.Type == SEC_IMAGE, "%d: %x != SEC_IMAGE\n", i, info.Type);
+ ok(info.Protect == PAGE_EXECUTE_WRITECOPY, "%x != PAGE_EXECUTE_WRITECOPY\n", info.Protect);
+ ok(info.BaseAddress == hlib, "got %p != expected %p\n", info.BaseAddress, hlib);
+ ok(info.AllocationBase == hlib, "%p != %p\n", info.AllocationBase, hlib);
+ ok(info.AllocationProtect == PAGE_EXECUTE_WRITECOPY, "%x != PAGE_EXECUTE_WRITECOPY\n", info.AllocationProtect);
+ ok(info.RegionSize == ALIGN_SIZE(file_size, page_size), "got %lx != expected %x\n",
+ info.RegionSize, ALIGN_SIZE(file_size, page_size));
+ ok(info.State == MEM_COMMIT, "%x != MEM_COMMIT\n", info.State);
+ ok(info.Protect == PAGE_READONLY, "%x != PAGE_READONLY\n", info.Protect);
+ ok(info.Type == SEC_IMAGE, "%x != SEC_IMAGE\n", info.Type);
}
/* header: check the zeroing of alignment */
@@ -974,7 +974,7 @@ static void test_Loader(void)
start = (const char *)hlib + nt_header.OptionalHeader.SizeOfHeaders;
size = ALIGN_SIZE((ULONG_PTR)start, page_size) - (ULONG_PTR)start;
- ok(!memcmp(start, filler, size), "%d: header alignment is not cleared\n", i);
+ ok(!memcmp(start, filler, size), "header alignment is not cleared\n");
}
if (nt_header.FileHeader.NumberOfSections)
@@ -982,25 +982,25 @@ static void test_Loader(void)
SetLastError(0xdeadbeef);
size = VirtualQuery((char *)hlib + section.VirtualAddress, &info, sizeof(info));
ok(size == sizeof(info),
- "%d: VirtualQuery error %d\n", i, GetLastError());
+ "VirtualQuery error %d\n", GetLastError());
if (nt_header.OptionalHeader.SectionAlignment < page_size)
{
- ok(info.BaseAddress == hlib, "%d: got %p != expected %p\n", i, info.BaseAddress, hlib);
- ok(info.RegionSize == ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size), "%d: got %lx != expected %x\n",
- i, info.RegionSize, ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size));
- ok(info.Protect == PAGE_EXECUTE_WRITECOPY, "%d: %x != PAGE_EXECUTE_WRITECOPY\n", i, info.Protect);
+ ok(info.BaseAddress == hlib, "got %p != expected %p\n", info.BaseAddress, hlib);
+ ok(info.RegionSize == ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size), "got %lx != expected %x\n",
+ info.RegionSize, ALIGN_SIZE(nt_header.OptionalHeader.SizeOfImage, page_size));
+ ok(info.Protect == PAGE_EXECUTE_WRITECOPY, "%x != PAGE_EXECUTE_WRITECOPY\n", info.Protect);
}
else
{
- ok(info.BaseAddress == (char *)hlib + section.VirtualAddress, "%d: got %p != expected %p\n", i, info.BaseAddress, (char *)hlib + section.VirtualAddress);
- ok(info.RegionSize == ALIGN_SIZE(section.Misc.VirtualSize, page_size), "%d: got %lx != expected %x\n",
- i, info.RegionSize, ALIGN_SIZE(section.Misc.VirtualSize, page_size));
- ok(info.Protect == PAGE_READONLY, "%d: %x != PAGE_READONLY\n", i, info.Protect);
+ ok(info.BaseAddress == (char *)hlib + section.VirtualAddress, "got %p != expected %p\n", info.BaseAddress, (char *)hlib + section.VirtualAddress);
+ ok(info.RegionSize == ALIGN_SIZE(section.Misc.VirtualSize, page_size), "got %lx != expected %x\n",
+ info.RegionSize, ALIGN_SIZE(section.Misc.VirtualSize, page_size));
+ ok(info.Protect == PAGE_READONLY, "%x != PAGE_READONLY\n", info.Protect);
}
- ok(info.AllocationBase == hlib, "%d: %p != %p\n", i, info.AllocationBase, hlib);
- ok(info.AllocationProtect == PAGE_EXECUTE_WRITECOPY, "%d: %x != PAGE_EXECUTE_WRITECOPY\n", i, info.AllocationProtect);
- ok(info.State == MEM_COMMIT, "%d: %x != MEM_COMMIT\n", i, info.State);
- ok(info.Type == SEC_IMAGE, "%d: %x != SEC_IMAGE\n", i, info.Type);
+ ok(info.AllocationBase == hlib, "%p != %p\n", info.AllocationBase, hlib);
+ ok(info.AllocationProtect == PAGE_EXECUTE_WRITECOPY, "%x != PAGE_EXECUTE_WRITECOPY\n", info.AllocationProtect);
+ ok(info.State == MEM_COMMIT, "%x != MEM_COMMIT\n", info.State);
+ ok(info.Type == SEC_IMAGE, "%x != SEC_IMAGE\n", info.Type);
if (nt_header.OptionalHeader.SectionAlignment >= page_size)
ok(!memcmp((const char *)hlib + section.VirtualAddress + section.PointerToRawData, &nt_header, section.SizeOfRawData), "wrong section data\n");
@@ -1014,14 +1014,14 @@ static void test_Loader(void)
start = (const char *)hlib + section.VirtualAddress + section.PointerToRawData + section.SizeOfRawData;
size = ALIGN_SIZE((ULONG_PTR)start, page_size) - (ULONG_PTR)start;
- ok(memcmp(start, filler, size), "%d: alignment should not be cleared\n", i);
+ ok(memcmp(start, filler, size), "alignment should not be cleared\n");
}
SetLastError(0xdeadbeef);
ptr = VirtualAlloc((char *)hlib + section.VirtualAddress, page_size, MEM_COMMIT, info.Protect);
- ok(!ptr, "%d: VirtualAlloc should fail\n", i);
+ ok(!ptr, "VirtualAlloc should fail\n");
ok(GetLastError() == ERROR_ACCESS_DENIED || GetLastError() == ERROR_INVALID_ADDRESS,
- "%d: expected ERROR_ACCESS_DENIED, got %d\n", i, GetLastError());
+ "expected ERROR_ACCESS_DENIED, got %d\n", GetLastError());
}
SetLastError(0xdeadbeef);
@@ -1120,6 +1120,7 @@ static void test_Loader(void)
if (!file_size)
{
ok(0, "could not create %s\n", dll_name);
+ winetest_pop_context();
break;
}
@@ -1137,12 +1138,13 @@ static void test_Loader(void)
{
error_match = td[i].errors[error_index] == GetLastError();
}
- ok(error_match, "%d: unexpected error %d\n", i, GetLastError());
+ ok(error_match, "unexpected error %d\n", GetLastError());
}
SetLastError(0xdeadbeef);
ret = DeleteFileA(dll_name);
ok(ret, "DeleteFile error %d\n", GetLastError());
+ winetest_pop_context();
}
nt_header = nt_header_template;
--
2.20.1