From 50c4723aec7610e7cd6c7ff918f0a1fd5aa2994e Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Mon, 23 Sep 2013 16:54:34 +0900 Subject: [PATCH] shlwapi/tests: Skip some of IStream invalid parameter tests under Windows 2000 + IE5. --- dlls/shlwapi/tests/istream.c | 40 ++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/dlls/shlwapi/tests/istream.c b/dlls/shlwapi/tests/istream.c index 48f417f09a1..a61e29393af 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 */