Dmitry Timoshkov : shlwapi/tests: Skip some of IStream invalid parameter tests under Windows 2000 + IE5.
Alexandre Julliard
julliard at winehq.org
Tue Sep 24 03:22:00 CDT 2013
Module: wine
Branch: master
Commit: 50c4723aec7610e7cd6c7ff918f0a1fd5aa2994e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=50c4723aec7610e7cd6c7ff918f0a1fd5aa2994e
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Mon Sep 23 16:54:34 2013 +0900
shlwapi/tests: Skip some of IStream invalid parameter tests under Windows 2000 + IE5.
---
dlls/shlwapi/tests/istream.c | 40 +++++++++++++++++++++++++++-------------
1 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/dlls/shlwapi/tests/istream.c b/dlls/shlwapi/tests/istream.c
index 48f417f..a61e293 100644
--- a/dlls/shlwapi/tests/istream.c
+++ b/dlls/shlwapi/tests/istream.c
@@ -35,6 +35,7 @@ static HRESULT (WINAPI *pSHCreateStreamOnFileA)(LPCSTR file, DWORD mode, IStream
static HRESULT (WINAPI *pSHCreateStreamOnFileW)(LPCWSTR file, DWORD mode, IStream **stream);
static HRESULT (WINAPI *pSHCreateStreamOnFileEx)(LPCWSTR file, DWORD mode, DWORD attributes, BOOL create, IStream *template, IStream **stream);
+static BOOL is_win2000_IE5 = FALSE;
static void test_IStream_invalid_operations(IStream * stream, DWORD mode)
{
@@ -76,40 +77,53 @@ static void test_IStream_invalid_operations(IStream * stream, DWORD mode)
ret = stream->lpVtbl->Write(stream, NULL, 0, &count);
if (mode == STGM_READ)
- ok(ret == STG_E_ACCESSDENIED /* XP */ || ret == S_OK /* 2000 */,
- "expected STG_E_ACCESSDENIED or S_OK, got 0x%08x\n", ret);
+ {
+ ok(ret == STG_E_ACCESSDENIED /* XP */ || broken(ret == S_OK) /* Win2000 + IE5 */,
+ "expected STG_E_ACCESSDENIED, got 0x%08x\n", ret);
+ if (ret == S_OK)
+ is_win2000_IE5 = TRUE;
+ }
else
ok(ret == S_OK, "expected S_OK, got 0x%08x\n", ret);
+ /* IStream::Write calls below hang under Win2000 + IE5, Win2000 + IE6 SP1
+ * and newer Windows versions pass these tests.
+ */
+ if (is_win2000_IE5)
+ {
+ win_skip("broken IStream::Write implementation (win2000)\n");
+ return;
+ }
+
strcpy(data, "Hello");
ret = stream->lpVtbl->Write(stream, data, 5, NULL);
if (mode == STGM_READ)
- ok(ret == STG_E_ACCESSDENIED /* XP */ || ret == S_OK /* 2000 */,
- "expected STG_E_ACCESSDENIED or S_OK, got 0x%08x\n", ret);
+ ok(ret == STG_E_ACCESSDENIED,
+ "expected STG_E_ACCESSDENIED, got 0x%08x\n", ret);
else
ok(ret == S_OK, "expected S_OK, got 0x%08x\n", ret);
strcpy(data, "Hello");
ret = stream->lpVtbl->Write(stream, data, 0, NULL);
if (mode == STGM_READ)
- ok(ret == STG_E_ACCESSDENIED /* XP */ || ret == S_OK /* 2000 */,
- "expected STG_E_ACCESSDENIED or S_OK, got 0x%08x\n", ret);
+ ok(ret == STG_E_ACCESSDENIED,
+ "expected STG_E_ACCESSDENIED, got 0x%08x\n", ret);
else
ok(ret == S_OK, "expected S_OK, got 0x%08x\n", ret);
strcpy(data, "Hello");
ret = stream->lpVtbl->Write(stream, data, 0, &count);
if (mode == STGM_READ)
- ok(ret == STG_E_ACCESSDENIED /* XP */ || ret == S_OK /* 2000 */,
- "expected STG_E_ACCESSDENIED or S_OK, got 0x%08x\n", ret);
+ ok(ret == STG_E_ACCESSDENIED,
+ "expected STG_E_ACCESSDENIED, got 0x%08x\n", ret);
else
ok(ret == S_OK, "expected S_OK, got 0x%08x\n", ret);
strcpy(data, "Hello");
ret = stream->lpVtbl->Write(stream, data, 3, &count);
if (mode == STGM_READ)
- ok(ret == STG_E_ACCESSDENIED /* XP */ || ret == S_OK /* 2000 */,
- "expected STG_E_ACCESSDENIED or S_OK, got 0x%08x\n", ret);
+ ok(ret == STG_E_ACCESSDENIED,
+ "expected STG_E_ACCESSDENIED, got 0x%08x\n", ret);
else
ok(ret == S_OK, "expected S_OK, got 0x%08x\n", ret);
@@ -119,8 +133,8 @@ static void test_IStream_invalid_operations(IStream * stream, DWORD mode)
ok(ret == S_OK, "expected S_OK, got 0x%08x\n", ret);
ret = IStream_Seek(stream, zero, 20, NULL);
- ok(ret == E_INVALIDARG /* XP */ || ret == S_OK /* 2000 */,
- "expected E_INVALIDARG or S_OK, got 0x%08x\n", ret);
+ ok(ret == E_INVALIDARG,
+ "expected E_INVALIDARG, got 0x%08x\n", ret);
/* IStream::CopyTo */
@@ -172,7 +186,7 @@ static void test_IStream_invalid_operations(IStream * stream, DWORD mode)
/* IStream::Stat */
ret = IStream_Stat(stream, NULL, 0);
- ok(ret == STG_E_INVALIDPOINTER /* XP */ || ret == E_NOTIMPL /* 2000 */,
+ ok(ret == STG_E_INVALIDPOINTER,
"expected STG_E_INVALIDPOINTER or E_NOTIMPL, got 0x%08x\n", ret);
/* IStream::Clone */
More information about the wine-cvs
mailing list