[PATCH] kernel32/tests: Show flags as text in test results.
Lauri Kenttä
lauri.kentta at gmail.com
Fri Dec 9 14:04:18 CST 2016
This patch uses a simple preprocessor trick to provide string
representations of the flags in case a test fails.
The tests are not changed at all.
I wrote this because TestBot seems to randomly fail on WinXP and
reading the hexadecimal flags is a pain.
I can totally undestand if this is not worth mainlining.
Signed-off-by: Lauri Kenttä <lauri.kentta at gmail.com>
---
dlls/kernel32/tests/file.c | 89 ++++++++++++++++++++++++----------------------
1 file changed, 46 insertions(+), 43 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c
index 70424db..7839802 100644
--- a/dlls/kernel32/tests/file.c
+++ b/dlls/kernel32/tests/file.c
@@ -2337,21 +2337,24 @@ static BOOL is_sharing_map_compatible( DWORD map_access, DWORD access2, DWORD sh
static void test_file_sharing(void)
{
- static const DWORD access_modes[] =
- { 0, GENERIC_READ, GENERIC_WRITE, GENERIC_READ|GENERIC_WRITE,
- DELETE, GENERIC_READ|DELETE, GENERIC_WRITE|DELETE, GENERIC_READ|GENERIC_WRITE|DELETE,
- GENERIC_EXECUTE, GENERIC_EXECUTE | DELETE,
- FILE_READ_DATA, FILE_WRITE_DATA, FILE_APPEND_DATA, FILE_READ_EA, FILE_WRITE_EA,
- FILE_READ_DATA | FILE_EXECUTE, FILE_WRITE_DATA | FILE_EXECUTE, FILE_APPEND_DATA | FILE_EXECUTE,
- FILE_READ_EA | FILE_EXECUTE, FILE_WRITE_EA | FILE_EXECUTE, FILE_EXECUTE,
- FILE_DELETE_CHILD, FILE_READ_ATTRIBUTES, FILE_WRITE_ATTRIBUTES };
- static const DWORD sharing_modes[] =
- { 0, FILE_SHARE_READ,
- FILE_SHARE_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,
- FILE_SHARE_DELETE, FILE_SHARE_READ|FILE_SHARE_DELETE,
- FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE };
- static const DWORD mapping_modes[] =
- { PAGE_READONLY, PAGE_WRITECOPY, PAGE_READWRITE, SEC_IMAGE | PAGE_WRITECOPY };
+ struct mode { DWORD dw; const char* str; };
+ #define M(x) {x, # x}
+ static const struct mode access_modes[] =
+ { M(0), M(GENERIC_READ), M(GENERIC_WRITE), M(GENERIC_READ|GENERIC_WRITE),
+ M(DELETE), M(GENERIC_READ|DELETE), M(GENERIC_WRITE|DELETE), M(GENERIC_READ|GENERIC_WRITE|DELETE),
+ M(GENERIC_EXECUTE), M(GENERIC_EXECUTE | DELETE),
+ M(FILE_READ_DATA), M(FILE_WRITE_DATA), M(FILE_APPEND_DATA), M(FILE_READ_EA), M(FILE_WRITE_EA),
+ M(FILE_READ_DATA | FILE_EXECUTE), M(FILE_WRITE_DATA | FILE_EXECUTE), M(FILE_APPEND_DATA | FILE_EXECUTE),
+ M(FILE_READ_EA | FILE_EXECUTE), M(FILE_WRITE_EA | FILE_EXECUTE), M(FILE_EXECUTE),
+ M(FILE_DELETE_CHILD), M(FILE_READ_ATTRIBUTES), M(FILE_WRITE_ATTRIBUTES) };
+ static const struct mode sharing_modes[] =
+ { M(0), M(FILE_SHARE_READ),
+ M(FILE_SHARE_WRITE), M(FILE_SHARE_READ|FILE_SHARE_WRITE),
+ M(FILE_SHARE_DELETE), M(FILE_SHARE_READ|FILE_SHARE_DELETE),
+ M(FILE_SHARE_WRITE|FILE_SHARE_DELETE), M(FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE) };
+ static const struct mode mapping_modes[] =
+ { M(PAGE_READONLY), M(PAGE_WRITECOPY), M(PAGE_READWRITE), M(SEC_IMAGE | PAGE_WRITECOPY) };
+ #undef M
int a1, s1, a2, s2;
int ret;
HANDLE h, h2;
@@ -2368,7 +2371,7 @@ static void test_file_sharing(void)
for (s1 = 0; s1 < sizeof(sharing_modes)/sizeof(sharing_modes[0]); s1++)
{
SetLastError(0xdeadbeef);
- h = CreateFileA( filename, access_modes[a1], sharing_modes[s1],
+ h = CreateFileA( filename, access_modes[a1].dw, sharing_modes[s1].dw,
NULL, OPEN_EXISTING, 0, 0 );
if (h == INVALID_HANDLE_VALUE)
{
@@ -2380,24 +2383,24 @@ static void test_file_sharing(void)
for (s2 = 0; s2 < sizeof(sharing_modes)/sizeof(sharing_modes[0]); s2++)
{
SetLastError(0xdeadbeef);
- h2 = CreateFileA( filename, access_modes[a2], sharing_modes[s2],
+ h2 = CreateFileA( filename, access_modes[a2].dw, sharing_modes[s2].dw,
NULL, OPEN_EXISTING, 0, 0 );
ret = GetLastError();
- if (is_sharing_compatible( access_modes[a1], sharing_modes[s1],
- access_modes[a2], sharing_modes[s2] ))
+ if (is_sharing_compatible( access_modes[a1].dw, sharing_modes[s1].dw,
+ access_modes[a2].dw, sharing_modes[s2].dw ))
{
ok( h2 != INVALID_HANDLE_VALUE,
- "open failed for modes %x/%x/%x/%x\n",
- access_modes[a1], sharing_modes[s1],
- access_modes[a2], sharing_modes[s2] );
+ "open failed for modes %s / %s / %s / %s\n",
+ access_modes[a1].str, sharing_modes[s1].str,
+ access_modes[a2].str, sharing_modes[s2].str );
ok( ret == 0, "wrong error code %d\n", ret );
}
else
{
ok( h2 == INVALID_HANDLE_VALUE,
- "open succeeded for modes %x/%x/%x/%x\n",
- access_modes[a1], sharing_modes[s1],
- access_modes[a2], sharing_modes[s2] );
+ "open succeeded for modes %s / %s / %s / %s\n",
+ access_modes[a1].str, sharing_modes[s1].str,
+ access_modes[a2].str, sharing_modes[s2].str );
ok( ret == ERROR_SHARING_VIOLATION,
"wrong error code %d\n", ret );
}
@@ -2420,8 +2423,8 @@ static void test_file_sharing(void)
ok(0,"couldn't create file \"%s\" (err=%d)\n",filename,GetLastError());
return;
}
- m = CreateFileMappingA( h, NULL, mapping_modes[a1], 0, 0, NULL );
- ok( m != 0, "failed to create mapping %x err %u\n", mapping_modes[a1], GetLastError() );
+ m = CreateFileMappingA( h, NULL, mapping_modes[a1].dw, 0, 0, NULL );
+ ok( m != 0, "failed to create mapping %s err %u\n", mapping_modes[a1].str, GetLastError() );
CloseHandle( h );
if (!m) continue;
@@ -2430,24 +2433,24 @@ static void test_file_sharing(void)
for (s2 = 0; s2 < sizeof(sharing_modes)/sizeof(sharing_modes[0]); s2++)
{
SetLastError(0xdeadbeef);
- h2 = CreateFileA( filename, access_modes[a2], sharing_modes[s2],
+ h2 = CreateFileA( filename, access_modes[a2].dw, sharing_modes[s2].dw,
NULL, OPEN_EXISTING, 0, 0 );
ret = GetLastError();
if (h2 == INVALID_HANDLE_VALUE)
{
- ok( !is_sharing_map_compatible(mapping_modes[a1], access_modes[a2], sharing_modes[s2]),
- "open failed for modes map %x/%x/%x\n",
- mapping_modes[a1], access_modes[a2], sharing_modes[s2] );
+ ok( !is_sharing_map_compatible(mapping_modes[a1].dw, access_modes[a2].dw, sharing_modes[s2].dw),
+ "open failed for modes map %s / %s / %s\n",
+ mapping_modes[a1].str, access_modes[a2].str, sharing_modes[s2].str );
ok( ret == ERROR_SHARING_VIOLATION,
"wrong error code %d\n", ret );
}
else
{
- if (!is_sharing_map_compatible(mapping_modes[a1], access_modes[a2], sharing_modes[s2]))
+ if (!is_sharing_map_compatible(mapping_modes[a1].dw, access_modes[a2].dw, sharing_modes[s2].dw))
ok( broken(1), /* no checking on nt4 */
- "open succeeded for modes map %x/%x/%x\n",
- mapping_modes[a1], access_modes[a2], sharing_modes[s2] );
+ "open succeeded for modes map %s / %s / %s\n",
+ mapping_modes[a1].str, access_modes[a2].str, sharing_modes[s2].str );
ok( ret == 0xdeadbeef /* Win9x */ ||
ret == 0, /* XP */
"wrong error code %d\n", ret );
@@ -2461,15 +2464,15 @@ static void test_file_sharing(void)
h2 = CreateFileA( filename, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, 0, 0 );
ret = GetLastError();
- if (mapping_modes[a1] & SEC_IMAGE)
+ if (mapping_modes[a1].dw & SEC_IMAGE)
{
- ok( h2 == INVALID_HANDLE_VALUE, "create succeeded for map %x\n", mapping_modes[a1] );
- ok( ret == ERROR_SHARING_VIOLATION, "wrong error code %d for %x\n", ret, mapping_modes[a1] );
+ ok( h2 == INVALID_HANDLE_VALUE, "create succeeded for map %s\n", mapping_modes[a1].str );
+ ok( ret == ERROR_SHARING_VIOLATION, "wrong error code %d for %s\n", ret, mapping_modes[a1].str );
}
else
{
- ok( h2 == INVALID_HANDLE_VALUE, "create succeeded for map %x\n", mapping_modes[a1] );
- ok( ret == ERROR_USER_MAPPED_FILE, "wrong error code %d for %x\n", ret, mapping_modes[a1] );
+ ok( h2 == INVALID_HANDLE_VALUE, "create succeeded for map %s\n", mapping_modes[a1].str );
+ ok( ret == ERROR_USER_MAPPED_FILE, "wrong error code %d for %s\n", ret, mapping_modes[a1].str );
}
if (h2 != INVALID_HANDLE_VALUE) CloseHandle( h2 );
@@ -2478,14 +2481,14 @@ static void test_file_sharing(void)
h2 = CreateFileA( filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, 0 );
ret = GetLastError();
- if (mapping_modes[a1] & SEC_IMAGE)
+ if (mapping_modes[a1].dw & SEC_IMAGE)
{
- ok( h2 == INVALID_HANDLE_VALUE, "create succeeded for map %x\n", mapping_modes[a1] );
- ok( ret == ERROR_ACCESS_DENIED, "wrong error code %d for %x\n", ret, mapping_modes[a1] );
+ ok( h2 == INVALID_HANDLE_VALUE, "create succeeded for map %s\n", mapping_modes[a1].str );
+ ok( ret == ERROR_ACCESS_DENIED, "wrong error code %d for %s\n", ret, mapping_modes[a1].str );
}
else
{
- ok( h2 != INVALID_HANDLE_VALUE, "open failed for map %x err %u\n", mapping_modes[a1], ret );
+ ok( h2 != INVALID_HANDLE_VALUE, "open failed for map %s err %u\n", mapping_modes[a1].str, ret );
}
if (h2 != INVALID_HANDLE_VALUE) CloseHandle( h2 );
--
2.10.2
More information about the wine-patches
mailing list