Ge van Geldorp : setupapi/tests: Make tests pass on Vista and W2K8.
Alexandre Julliard
julliard at winehq.org
Mon Jan 26 10:14:58 CST 2009
Module: wine
Branch: master
Commit: 115805f12e94ae07e2c9f5a5cf518e34e15d30dd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=115805f12e94ae07e2c9f5a5cf518e34e15d30dd
Author: Ge van Geldorp <ge at gse.nl>
Date: Mon Jan 26 01:26:52 2009 +0100
setupapi/tests: Make tests pass on Vista and W2K8.
---
dlls/setupapi/tests/devinst.c | 52 +++++++++++++++++++++++-----------------
1 files changed, 30 insertions(+), 22 deletions(-)
diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c
index 1dfb13d..c75d2f7 100644
--- a/dlls/setupapi/tests/devinst.c
+++ b/dlls/setupapi/tests/devinst.c
@@ -271,7 +271,7 @@ static void test_SetupDiCreateDeviceInfoListEx(void)
error = GetLastError();
ok(devlist == INVALID_HANDLE_VALUE, "SetupDiCreateDeviceInfoListExW failed : %p %d (expected %p)\n", devlist, error, INVALID_HANDLE_VALUE);
- ok(error == ERROR_INVALID_MACHINENAME, "GetLastError returned wrong value : %d, (expected %d)\n", error, ERROR_INVALID_MACHINENAME);
+ ok(error == ERROR_INVALID_MACHINENAME || error == ERROR_MACHINE_UNAVAILABLE, "GetLastError returned wrong value : %d, (expected %d or %d)\n", error, ERROR_INVALID_MACHINENAME, ERROR_MACHINE_UNAVAILABLE);
/* create empty DeviceInfoList */
devlist = pSetupDiCreateDeviceInfoListExW(NULL, NULL, NULL, NULL);
@@ -887,6 +887,7 @@ static void testDevRegKey(void)
BOOL ret;
HDEVINFO set;
HKEY key = NULL;
+ BOOL classKeyCreated;
SetLastError(0xdeadbeef);
key = pSetupDiCreateDevRegKeyW(NULL, NULL, 0, 0, 0, NULL, NULL);
@@ -974,26 +975,33 @@ static void testDevRegKey(void)
/* Create the device reg key */
key = pSetupDiCreateDevRegKeyW(set, &devInfo, DICS_FLAG_GLOBAL, 0,
DIREG_DRV, NULL, NULL);
- ok(key != INVALID_HANDLE_VALUE, "SetupDiCreateDevRegKey failed: %08x\n",
- GetLastError());
- RegCloseKey(key);
- /* The class key should have been created */
- ok(!RegOpenKeyW(HKEY_LOCAL_MACHINE, classKey, &key),
- "Expected registry key to exist\n");
- RegCloseKey(key);
- SetLastError(0xdeadbeef);
- key = pSetupDiOpenDevRegKey(set, &devInfo, DICS_FLAG_GLOBAL, 0,
- DIREG_DRV, 0);
- todo_wine
- ok(key == INVALID_HANDLE_VALUE &&
- (GetLastError() == ERROR_INVALID_DATA ||
- GetLastError() == ERROR_ACCESS_DENIED), /* win2k3 */
- "Expected ERROR_INVALID_DATA or ERROR_ACCESS_DENIED, got %08x\n", GetLastError());
- key = pSetupDiOpenDevRegKey(set, &devInfo, DICS_FLAG_GLOBAL, 0,
- DIREG_DRV, KEY_READ);
- ok(key != INVALID_HANDLE_VALUE, "SetupDiOpenDevRegKey failed: %08x\n",
- GetLastError());
- pSetupDiDestroyDeviceInfoList(set);
+ /* Vista and higher don't actually create the key */
+ ok(key != INVALID_HANDLE_VALUE || GetLastError() == ERROR_KEY_DOES_NOT_EXIST,
+ "SetupDiCreateDevRegKey failed: %08x\n", GetLastError());
+ if (key != INVALID_HANDLE_VALUE)
+ {
+ classKeyCreated = TRUE;
+ RegCloseKey(key);
+ /* The class key should have been created */
+ ok(!RegOpenKeyW(HKEY_LOCAL_MACHINE, classKey, &key),
+ "Expected registry key to exist\n");
+ RegCloseKey(key);
+ SetLastError(0xdeadbeef);
+ key = pSetupDiOpenDevRegKey(set, &devInfo, DICS_FLAG_GLOBAL, 0,
+ DIREG_DRV, 0);
+ todo_wine
+ ok(key == INVALID_HANDLE_VALUE &&
+ (GetLastError() == ERROR_INVALID_DATA ||
+ GetLastError() == ERROR_ACCESS_DENIED), /* win2k3 */
+ "Expected ERROR_INVALID_DATA or ERROR_ACCESS_DENIED, got %08x\n", GetLastError());
+ key = pSetupDiOpenDevRegKey(set, &devInfo, DICS_FLAG_GLOBAL, 0,
+ DIREG_DRV, KEY_READ);
+ ok(key != INVALID_HANDLE_VALUE, "SetupDiOpenDevRegKey failed: %08x\n",
+ GetLastError());
+ pSetupDiDestroyDeviceInfoList(set);
+ }
+ else
+ classKeyCreated = FALSE;
/* Cleanup */
ret = remove_device();
@@ -1008,7 +1016,7 @@ static void testDevRegKey(void)
devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, bogus);
devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, classKey);
}
- else
+ else if (classKeyCreated)
{
/* There should only be a class key entry, so a simple
* RegDeleteKey should work
More information about the wine-cvs
mailing list