[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