[PATCH] kernel32/tests: Use WineTest contexts to simplify test_Loader().

Francois Gouget fgouget at codeweavers.com
Sun Jul 18 00:35:11 CDT 2021


Signed-off-by: Francois Gouget <fgouget at 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



More information about the wine-devel mailing list