[PATCH 2/2] wininet/tests: Added checks for bad return values and skip tests when it happens. (try 2)

Morten Rønne morten.roenne at tdcadsl.dk
Mon Apr 9 04:02:36 CDT 2012


Morten Rønne
-------------- next part --------------
>From 279bab8d394de0eea9a08789b9f6558843176489 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Morten=20R=C3=B8nne?= <morten.roenne at tdcadsl.dk>
Date: Fri, 30 Mar 2012 20:04:04 +0200
Subject: [PATCH 2/2] wininet/tests: Added checks for bad return values and
 skip tests when it happens. Using known bad values
 doesn't do any good, not even in tests.

---
 dlls/wininet/tests/urlcache.c |  185 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 184 insertions(+), 1 deletions(-)

diff --git a/dlls/wininet/tests/urlcache.c b/dlls/wininet/tests/urlcache.c
index 02d8d28..1bf3f23 100644
--- a/dlls/wininet/tests/urlcache.c
+++ b/dlls/wininet/tests/urlcache.c
@@ -60,7 +60,20 @@ static void test_find_url_cache_entriesA(void)
     hEnumHandle = FindFirstUrlCacheEntry(NULL, NULL, &cbCacheEntryInfo);
     ok(!hEnumHandle, "FindFirstUrlCacheEntry should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "FindFirstUrlCacheEntry should have set last error to ERROR_INSUFFICIENT_BUFFER instead of %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Find*UrlCacheEntry tests skipped, due to wrong return value\n");
+        return;
+    }
+
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo * sizeof(char));
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Find*UrlCacheEntry tests skipped, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     cbCacheEntryInfoSaved = cbCacheEntryInfo;
     hEnumHandle = FindFirstUrlCacheEntry(NULL, lpCacheEntryInfo, &cbCacheEntryInfo);
     ok(hEnumHandle != NULL, "FindFirstUrlCacheEntry failed with error %d\n", GetLastError());
@@ -80,6 +93,9 @@ static void test_find_url_cache_entriesA(void)
             if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
             {
                 lpCacheEntryInfo = HeapReAlloc(GetProcessHeap(), 0, lpCacheEntryInfo, cbCacheEntryInfo);
+                if(lpCacheEntryInfo == NULL) break;
+
+                ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
                 cbCacheEntryInfoSaved = cbCacheEntryInfo;
                 ret = FindNextUrlCacheEntry(hEnumHandle, lpCacheEntryInfo, &cbCacheEntryInfo);
             }
@@ -122,8 +138,20 @@ static void test_GetUrlCacheEntryInfoExA(void)
     ok(!ret, "GetUrlCacheEntryInfoEx with zero-length buffer should fail\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "GetUrlCacheEntryInfoEx should have set last error to ERROR_INSUFFICIENT_BUFFER instead of %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping GetUrlCacheEntryInfoEx tests, due to wrong return value\n");
+        return;
+    }
 
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping GetUrlCacheEntryInfoEx tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
 
     SetLastError(0xdeadbeef);
     ret = GetUrlCacheEntryInfoEx(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo, NULL, NULL, NULL, 0x200);
@@ -236,6 +264,13 @@ static void test_IsUrlCacheEntryExpiredA(void)
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
     info = HeapAlloc(GetProcessHeap(), 0, size);
+    if (info == NULL)
+    {
+        skip("Skipping IsUrlCacheEntryExpiredA tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(info, size);
     ret = GetUrlCacheEntryInfo(TEST_URL, info, &size);
     ok(ret, "GetUrlCacheEntryInfo failed: %d\n", GetLastError());
     GetSystemTimeAsFileTime(&info->ExpireTime);
@@ -355,9 +390,19 @@ static void test_urlcacheA(void)
 
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
 
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA1, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
 
     ok(lstrcmpiA(filenameA, filenameA1), "expected a different file name\n");
 
@@ -365,12 +410,31 @@ static void test_urlcacheA(void)
 
     ret = CommitUrlCacheEntry(TEST_URL1, NULL, filetime_zero, filetime_zero, NORMAL_CACHE_ENTRY|URLHISTORY_CACHE_ENTRY, NULL, 0, "html", NULL);
     ok(ret, "CommitUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
+
     cbCacheEntryInfo = 0;
     ret = GetUrlCacheEntryInfo(TEST_URL1, NULL, &cbCacheEntryInfo);
     ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "GetUrlCacheEntryInfo should have set last error to ERROR_INSUFFICIENT_BUFFER instead of %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
+
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = GetUrlCacheEntryInfo(TEST_URL1, lpCacheEntryInfo, &cbCacheEntryInfo);
     ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
     ok(!memcmp(&lpCacheEntryInfo->ExpireTime, &filetime_zero, sizeof(FILETIME)),
@@ -392,12 +456,31 @@ static void test_urlcacheA(void)
     ret = CommitUrlCacheEntry(TEST_URL1, NULL, now, now, NORMAL_CACHE_ENTRY,
             (LPBYTE)ok_header, strlen(ok_header), NULL, NULL);
     ok(ret, "CommitUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
+
     cbCacheEntryInfo = 0;
     ret = GetUrlCacheEntryInfo(TEST_URL1, NULL, &cbCacheEntryInfo);
     ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
+
     lpCacheEntryInfo2 = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo2 == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo2, cbCacheEntryInfo);
     ret = GetUrlCacheEntryInfo(TEST_URL1, lpCacheEntryInfo2, &cbCacheEntryInfo);
     ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
     /* but it does change the time.. */
@@ -442,8 +525,20 @@ static void test_urlcacheA(void)
     ok(!ret, "RetrieveUrlCacheEntryFile should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "RetrieveUrlCacheEntryFile should have set last error to ERROR_INSUFFICIENT_BUFFER instead of %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
 
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = RetrieveUrlCacheEntryFile(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo, 0);
     ok(ret, "RetrieveUrlCacheEntryFile failed with error %d\n", GetLastError());
 
@@ -487,9 +582,19 @@ static void test_urlcacheA(void)
     /* Creating two entries with the same URL */
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
 
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA1, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
 
     ok(lstrcmpiA(filenameA, filenameA1), "expected a different file name\n");
 
@@ -516,7 +621,20 @@ static void test_urlcacheA(void)
     ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
+
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = GetUrlCacheEntryInfo(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
     ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
     /* with the previous entry type retained.. */
@@ -561,8 +679,20 @@ static void test_urlcacheA(void)
     ok(!ret, "RetrieveUrlCacheEntryFile should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
 
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = RetrieveUrlCacheEntryFile(TEST_URL, lpCacheEntryInfo,
             &cbCacheEntryInfo, 0);
     ok(ret, "RetrieveUrlCacheEntryFile failed with error %d\n", GetLastError());
@@ -579,7 +709,13 @@ static void test_urlcacheA(void)
     }
 
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
-    memset(lpCacheEntryInfo, 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = GetUrlCacheEntryInfo(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
     ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
     ok(lpCacheEntryInfo->CacheEntryType & DELETED_CACHE_ENTRY,
@@ -666,6 +802,12 @@ static void test_urlcacheA(void)
 
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
+
     create_and_write_file(filenameA, &zero_byte, sizeof(zero_byte));
     ret = CommitUrlCacheEntry(TEST_URL, filenameA, filetime_zero, filetime_zero,
             NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY,
@@ -677,7 +819,20 @@ static void test_urlcacheA(void)
     ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
+
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = GetUrlCacheEntryInfo(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
     ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
     ok(lpCacheEntryInfo->CacheEntryType & (NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY),
@@ -698,6 +853,12 @@ static void test_urlcacheA(void)
     /* Test once again, setting the exempt delta via SetUrlCacheEntryInfo */
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
+
     create_and_write_file(filenameA, &zero_byte, sizeof(zero_byte));
     ret = CommitUrlCacheEntry(TEST_URL, filenameA, filetime_zero, filetime_zero,
             NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY,
@@ -709,7 +870,20 @@ static void test_urlcacheA(void)
     ok(!ret, "GetUrlCacheEntryInfo should have failed\n");
     ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER,
        "expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());
+    if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
+    {
+        skip("Skipping UrlCache tests, due to wrong return value\n");
+        return;
+    }
+
     lpCacheEntryInfo = HeapAlloc(GetProcessHeap(), 0, cbCacheEntryInfo);
+    if (lpCacheEntryInfo == NULL)
+    {
+        skip("Skipping UrlCache tests, due to lack of memory\n");
+        return;
+    }
+
+    ZeroMemory(lpCacheEntryInfo, cbCacheEntryInfo);
     ret = GetUrlCacheEntryInfo(TEST_URL, lpCacheEntryInfo, &cbCacheEntryInfo);
     ok(ret, "GetUrlCacheEntryInfo failed with error %d\n", GetLastError());
     ok(lpCacheEntryInfo->CacheEntryType & (NORMAL_CACHE_ENTRY|STICKY_CACHE_ENTRY),
@@ -741,6 +915,12 @@ static void test_urlcacheA(void)
 
     ret = CreateUrlCacheEntry(TEST_URL, 0, "html", filenameA1, 0);
     ok(ret, "CreateUrlCacheEntry failed with error %d\n", GetLastError());
+    if (!ret)
+    {
+        skip("Skipping UrlCache tests, due to unexpected failure\n");
+        return;
+    }
+
     create_and_write_file(filenameA1, &zero_byte, sizeof(zero_byte));
 
     ret = CommitUrlCacheEntry(TEST_URL, filenameA1, filetime_zero, filetime_zero,
@@ -830,6 +1010,9 @@ START_TEST(urlcache)
     pDeleteUrlCacheEntryA = (void*)GetProcAddress(hdll, "DeleteUrlCacheEntryA");
     pUnlockUrlCacheEntryFileA = (void*)GetProcAddress(hdll, "UnlockUrlCacheEntryFileA");
     test_urlcacheA();
+    if (filenameA[0]) DeleteFile(filenameA);
+    if (filenameA1[0]) DeleteFile(filenameA1);
+
     test_FindCloseUrlCache();
     test_GetDiskInfoA();
 }
-- 
1.7.5.4



More information about the wine-patches mailing list