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