Paul Vriens : setupapi/tests: Fix two more tests on Windows 2000.

Alexandre Julliard julliard at winehq.org
Mon Jun 9 13:17:15 CDT 2008


Module: wine
Branch: master
Commit: e63f4fcfbc0a64de8ed824c5b7f2f2be8d054570
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=e63f4fcfbc0a64de8ed824c5b7f2f2be8d054570

Author: Paul Vriens <paul.vriens.wine at gmail.com>
Date:   Mon Jun  9 14:14:25 2008 +0200

setupapi/tests: Fix two more tests on Windows 2000.

---

 dlls/setupapi/tests/devinst.c |   57 ++++++++++++++++++++++------------------
 1 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/dlls/setupapi/tests/devinst.c b/dlls/setupapi/tests/devinst.c
index a47460c..f00de28 100644
--- a/dlls/setupapi/tests/devinst.c
+++ b/dlls/setupapi/tests/devinst.c
@@ -183,6 +183,33 @@ cleanup:
     return ret;
 }
 
+static void clean_devclass_key(void)
+{
+    static const WCHAR devclass[] = {'S','y','s','t','e','m','\\',
+     'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
+     'C','o','n','t','r','o','l','\\','D','e','v','i','c','e','C','l','a','s','s','e','s','\\',
+     '{','6','a','5','5','b','5','a','4','-','3','f','6','5','-',
+     '1','1','d','b','-','b','7','0','4','-',
+     '0','0','1','1','9','5','5','c','2','b','d','b','}',0};
+    HKEY key;
+    DWORD subkeys;
+
+    /* Check if we have subkeys as Windows 2000 doesn't delete
+     * the keys under the DeviceClasses key after a SetupDiDestroyDeviceInfoList.
+     */
+    RegOpenKeyW(HKEY_LOCAL_MACHINE, devclass, &key);
+    RegQueryInfoKey(key, NULL, NULL, NULL, &subkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+    if (subkeys > 0)
+    {
+        trace("We are most likely on Windows 2000\n");
+        devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, devclass);
+    }
+    else
+    {
+        ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass),
+         "Couldn't delete deviceclass key\n");
+    }
+}
 
 static void test_SetupDiCreateDeviceInfoListEx(void) 
 {
@@ -704,8 +731,7 @@ static void testCreateDeviceInterface(void)
         /* Cleanup */
         /* FIXME: On Wine we still have the bogus entry in Enum\Root and
          * subkeys, as well as the deviceclass key with subkeys.
-         * Only do the RegDeleteKey (and RegDeleteTree on Windows 2000),
-         * once Wine is fixed.
+         * Only clean the deviceclass key once Wine if fixed.
          */
         if (!RegOpenKeyW(HKEY_LOCAL_MACHINE, bogus, &key))
         {
@@ -716,23 +742,7 @@ static void testCreateDeviceInterface(void)
         }
         else
         {
-            DWORD subkeys;
-
-            /* Check if we have subkeys as Windows 2000 doesn't delete
-             * the keys under the DeviceClasses key
-             */
-            RegOpenKeyW(HKEY_LOCAL_MACHINE, devclass, &key);
-            RegQueryInfoKey(key, NULL, NULL, NULL, &subkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
-            if (subkeys > 0)
-            {
-                trace("We are most likely on Windows 2000\n");
-                devinst_RegDeleteTreeW(HKEY_LOCAL_MACHINE, devclass);
-            }
-            else
-            {
-                ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass),
-                 "Couldn't delete deviceclass key\n");
-            }
+            clean_devclass_key();
         }
     }
 }
@@ -865,8 +875,7 @@ static void testGetDeviceInterfaceDetail(void)
         }
         else
         {
-            ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass),
-             "Couldn't delete deviceclass key\n");
+            clean_devclass_key();
         }
     }
 }
@@ -1125,11 +1134,7 @@ static void testRegisterAndGetDetail(void)
     }
     else
     {
-        /* There should only be a class key entry, so a simple
-         * RegDeleteKey should work
-         */
-        ok(!RegDeleteKeyW(HKEY_LOCAL_MACHINE, devclass),
-         "Couldn't delete classkey\n");
+        clean_devclass_key();
     }
 }
 




More information about the wine-cvs mailing list