From 4ca754d9a996e7a1536eff1da2ac64610aca8943 Mon Sep 17 00:00:00 2001 From: Paul Vriens Date: Tue, 11 Mar 2008 11:09:38 +0100 Subject: [PATCH] kernel32: Fix/change tests for systems with no ServicePack. --- dlls/kernel32/tests/version.c | 42 ++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/dlls/kernel32/tests/version.c b/dlls/kernel32/tests/version.c index 07d35dab15f..5371795ba6b 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()); + 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--; + 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++;