[2/3] scrrun/tests: Refactor code to get a fixed drive into a method. (try 2)

Joachim Priesner joachim.priesner at web.de
Thu Oct 15 16:36:21 CDT 2015


v2 - no changes

Signed-off-by: Joachim Priesner <joachim.priesner at web.de>
---
 dlls/scrrun/tests/filesystem.c | 75 ++++++++++++++++++++++++------------------
 1 file changed, 43 insertions(+), 32 deletions(-)

diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c
index 5270726..488aba4 100644
--- a/dlls/scrrun/tests/filesystem.c
+++ b/dlls/scrrun/tests/filesystem.c
@@ -59,6 +59,45 @@ static inline void get_temp_path(const WCHAR *prefix, WCHAR *path)
     DeleteFileW(path);
 }
 
+static void get_fixed_drive(IDrive **drive)
+{
+    IDriveCollection *drives;
+    IEnumVARIANT *iter;
+    HRESULT hr;
+
+    hr = IFileSystem3_get_Drives(fs3, &drives);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+
+    hr = IDriveCollection_get__NewEnum(drives, (IUnknown**)&iter);
+    ok(hr == S_OK, "got 0x%08x\n", hr);
+    IDriveCollection_Release(drives);
+
+    while (1) {
+        DriveTypeConst type;
+        VARIANT var;
+
+        hr = IEnumVARIANT_Next(iter, 1, &var, NULL);
+        if (hr == S_FALSE) {
+            *drive = NULL;
+            break;
+        }
+        ok(hr == S_OK, "got 0x%08x\n", hr);
+
+        hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IDrive, (void**)drive);
+        ok(hr == S_OK, "got 0x%08x\n", hr);
+        VariantClear(&var);
+
+        hr = IDrive_get_DriveType(*drive, &type);
+        ok(hr == S_OK, "got 0x%08x\n", hr);
+        if (type == Fixed)
+            break;
+
+        IDrive_Release(*drive);
+    }
+
+    IEnumVARIANT_Release(iter);
+}
+
 static void test_interfaces(void)
 {
     static const WCHAR nonexistent_dirW[] = {
@@ -1903,42 +1942,15 @@ static void test_GetDriveName(void)
 
 static void test_SerialNumber(void)
 {
-    IDriveCollection *drives;
-    IEnumVARIANT *iter;
     IDrive *drive;
     LONG serial;
     HRESULT hr;
     BSTR name;
 
-    hr = IFileSystem3_get_Drives(fs3, &drives);
-    ok(hr == S_OK, "got 0x%08x\n", hr);
-
-    hr = IDriveCollection_get__NewEnum(drives, (IUnknown**)&iter);
-    ok(hr == S_OK, "got 0x%08x\n", hr);
-    IDriveCollection_Release(drives);
-
-    while (1) {
-        DriveTypeConst type;
-        VARIANT var;
-
-        hr = IEnumVARIANT_Next(iter, 1, &var, NULL);
-        if (hr == S_FALSE) {
-            skip("No fixed drive found, skipping test.\n");
-            IEnumVARIANT_Release(iter);
-            return;
-        }
-        ok(hr == S_OK, "got 0x%08x\n", hr);
-
-        hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IDrive, (void**)&drive);
-        ok(hr == S_OK, "got 0x%08x\n", hr);
-        VariantClear(&var);
-
-        hr = IDrive_get_DriveType(drive, &type);
-        ok(hr == S_OK, "got 0x%08x\n", hr);
-        if (type == Fixed)
-            break;
-
-        IDrive_Release(drive);
+    get_fixed_drive(&drive);
+    if (!drive) {
+        skip("No fixed drive found, skipping test.\n");
+        return;
     }
 
     hr = IDrive_get_SerialNumber(drive, NULL);
@@ -1968,7 +1980,6 @@ static void test_SerialNumber(void)
     SysFreeString(name);
 
     IDrive_Release(drive);
-    IEnumVARIANT_Release(iter);
 }
 
 static const struct extension_test {
-- 
2.1.4




More information about the wine-patches mailing list