[PATCH] Fix/change tests for systems with no ServicePack

Paul Vriens Paul.Vriens.Wine at gmail.com
Tue Mar 11 05:09:38 CDT 2008


---
 dlls/kernel32/tests/version.c |   44 +++++++++++++++++++++++++++++-----------
 1 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/dlls/kernel32/tests/version.c b/dlls/kernel32/tests/version.c
index 07d35da..f8772a1 100644
--- a/dlls/kernel32/tests/version.c
+++ b/dlls/kernel32/tests/version.c
@@ -101,6 +101,7 @@ static void test_VerifyVersionInfo(void)
 {
     OSVERSIONINFOEX info = { sizeof(info) };
     BOOL ret;
+    DWORD servicepack;
 
     if(!pVerifyVersionInfoA || !pVerSetConditionMask)
     {
@@ -108,6 +109,14 @@ static void test_VerifyVersionInfo(void)
         return;
     }
 
+    /* Before we start doing some tests we should check what the version of 
+     * the ServicePack is. Tests on a box with no ServicePack will fail otherwise.
+     */
+    GetVersionEx((OSVERSIONINFO *)&info);
+    servicepack = info.wServicePackMajor;
+    memset(&info, 0, sizeof(info));
+    info.dwOSVersionInfoSize = sizeof(info);
+
     ret = pVerifyVersionInfoA(&info, VER_MAJORVERSION | VER_MINORVERSION,
         pVerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL));
     ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
@@ -152,7 +161,11 @@ static void test_VerifyVersionInfo(void)
     ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
         pVerSetConditionMask(pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL),
             VER_MAJORVERSION, VER_GREATER_EQUAL));
-    ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
+    if (servicepack == 0)
+        ok(!ret && (GetLastError() == ERROR_OLD_WIN_VERSION),
+            "VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", GetLastError());
+    else
+        ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
 
     GetVersionEx((OSVERSIONINFO *)&info);
     info.wServicePackMinor++;
@@ -161,17 +174,24 @@ static void test_VerifyVersionInfo(void)
     ok(!ret && (GetLastError() == ERROR_OLD_WIN_VERSION),
         "VerifyVersionInfoA should have failed with ERROR_OLD_WIN_VERSION instead of %d\n", GetLastError());
 
-    GetVersionEx((OSVERSIONINFO *)&info);
-    info.wServicePackMajor--;
-    ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
-        pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER));
-    ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
-
-    GetVersionEx((OSVERSIONINFO *)&info);
-    info.wServicePackMajor--;
-    ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
-        pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
-    ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
+    if (servicepack == 0)
+    {
+        skip("There is no ServicePack on this system\n");
+    }
+    else
+    {
+        GetVersionEx((OSVERSIONINFO *)&info);
+        info.wServicePackMajor--;
+        ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
+            pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER));
+        ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
+
+        GetVersionEx((OSVERSIONINFO *)&info);
+        info.wServicePackMajor--;
+        ret = pVerifyVersionInfoA(&info, VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
+            pVerSetConditionMask(0, VER_MINORVERSION, VER_GREATER_EQUAL));
+        ok(ret, "VerifyVersionInfoA failed with error %d\n", GetLastError());
+    }
 
     GetVersionEx((OSVERSIONINFO *)&info);
     info.wServicePackMajor++;
-- 
1.5.4.1


--------------080307030607090208090805--



More information about the wine-patches mailing list