kernel32/tests: Fix some module tests on Windows 8.

Windows 8 and 8.1 return some different error codes and
GetDllDirectory() handles buffer termination a bit differently.
This commit is contained in:
Francois Gouget 2013-11-01 10:14:44 +01:00 committed by Alexandre Julliard
parent 59dd66df2e
commit f399e90306
1 changed files with 8 additions and 7 deletions

View File

@ -261,7 +261,8 @@ static void testLoadLibraryEx(void)
hmodule = LoadLibraryExA("", NULL, 0); hmodule = LoadLibraryExA("", NULL, 0);
ok(hmodule == 0, "Expected 0, got %p\n", hmodule); ok(hmodule == 0, "Expected 0, got %p\n", hmodule);
ok(GetLastError() == ERROR_MOD_NOT_FOUND || ok(GetLastError() == ERROR_MOD_NOT_FOUND ||
GetLastError() == ERROR_DLL_NOT_FOUND, /* win9x */ GetLastError() == ERROR_DLL_NOT_FOUND /* win9x */ ||
GetLastError() == ERROR_INVALID_PARAMETER /* win8 */,
"Expected ERROR_MOD_NOT_FOUND or ERROR_DLL_NOT_FOUND, got %d\n", "Expected ERROR_MOD_NOT_FOUND or ERROR_DLL_NOT_FOUND, got %d\n",
GetLastError()); GetLastError());
@ -438,7 +439,8 @@ static void testGetDllDirectory(void)
bufferA[length] = 'A'; bufferA[length] = 'A';
bufferA[length + 1] = 'A'; bufferA[length + 1] = 'A';
ret = pGetDllDirectoryA(length + 1, bufferA); ret = pGetDllDirectoryA(length + 1, bufferA);
ok(ret == length, "i=%d, Expected %u, got %u\n", i, length, ret); ok(ret == length || broken(ret + 1 == length) /* win8 */,
"i=%d, Expected %u(+1), got %u\n", i, length, ret);
ok(bufferA[length + 1] == 'A', "i=%d, Buffer overflow\n", i); ok(bufferA[length + 1] == 'A', "i=%d, Buffer overflow\n", i);
ok(strcmp(bufferA, dll_directories[i]) == 0, "i=%d, Wrong path returned: '%s'\n", i, bufferA); ok(strcmp(bufferA, dll_directories[i]) == 0, "i=%d, Wrong path returned: '%s'\n", i, bufferA);
@ -450,13 +452,11 @@ static void testGetDllDirectory(void)
ok(cmpStrAW(dll_directories[i], bufferW, length, length), ok(cmpStrAW(dll_directories[i], bufferW, length, length),
"i=%d, Wrong path returned: %s\n", i, wine_dbgstr_w(bufferW)); "i=%d, Wrong path returned: %s\n", i, wine_dbgstr_w(bufferW));
/* zero size buffer /* Zero size buffer. The buffer may or may not be terminated depending
* the A version always null-terminates the buffer, * on the Windows version and whether the A or W API is called. */
* the W version doesn't do it on some platforms */
bufferA[0] = 'A'; bufferA[0] = 'A';
ret = pGetDllDirectoryA(0, bufferA); ret = pGetDllDirectoryA(0, bufferA);
ok(ret == length + 1, "i=%d, Expected %u, got %u\n", i, length + 1, ret); ok(ret == length + 1, "i=%d, Expected %u, got %u\n", i, length + 1, ret);
ok(bufferA[0] == 0, "i=%d, Buffer not null terminated\n", i);
bufferW[0] = 'A'; bufferW[0] = 'A';
ret = pGetDllDirectoryW(0, bufferW); ret = pGetDllDirectoryW(0, bufferW);
@ -468,6 +468,7 @@ static void testGetDllDirectory(void)
bufferA[0] = 'A'; bufferA[0] = 'A';
ret = pGetDllDirectoryA(length, bufferA); ret = pGetDllDirectoryA(length, bufferA);
ok(ret == length + 1, "i=%d, Expected %u, got %u\n", i, length + 1, ret); ok(ret == length + 1, "i=%d, Expected %u, got %u\n", i, length + 1, ret);
if (length != 0)
ok(bufferA[0] == 0, "i=%d, Buffer not null terminated\n", i); ok(bufferA[0] == 0, "i=%d, Buffer not null terminated\n", i);
bufferW[0] = 'A'; bufferW[0] = 'A';