From f623e3add8a1c7ebb182c6e2097f623f6268e6ee Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sat, 23 Jan 2010 23:58:23 +0100 Subject: [PATCH] jscript: Skip tests on old jscript.dll. --- dlls/jscript/tests/run.c | 50 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c index 72640a6e7a1..303907e8f90 100644 --- a/dlls/jscript/tests/run.c +++ b/dlls/jscript/tests/run.c @@ -726,7 +726,7 @@ static IActiveScript *create_script(void) return script; } -static void parse_script(DWORD flags, BSTR script_str) +static HRESULT parse_script(DWORD flags, BSTR script_str) { IActiveScriptParse *parser; IActiveScript *engine; @@ -734,14 +734,14 @@ static void parse_script(DWORD flags, BSTR script_str) engine = create_script(); if(!engine) - return; + return S_OK; hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser); ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres); if (FAILED(hres)) { IActiveScript_Release(engine); - return; + return hres; } hres = IActiveScriptParse64_InitNew(parser); @@ -763,11 +763,12 @@ static void parse_script(DWORD flags, BSTR script_str) ok(script_disp != (IDispatch*)&Global, "script_disp == Global\n"); hres = IActiveScriptParse64_ParseScriptText(parser, script_str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL); - ok(hres == S_OK, "ParseScriptText failed: %08x\n", hres); IDispatch_Release(script_disp); IActiveScript_Release(engine); IUnknown_Release(parser); + + return hres; } static HRESULT parse_htmlscript(BSTR script_str) @@ -813,9 +814,13 @@ static HRESULT parse_htmlscript(BSTR script_str) static void parse_script_af(DWORD flags, const char *src) { - BSTR tmp = a2bstr(src); - parse_script(flags, tmp); + BSTR tmp; + HRESULT hres; + + tmp = a2bstr(src); + hres = parse_script(flags, tmp); SysFreeString(tmp); + ok(hres == S_OK, "parse_script failed: %08x\n", hres); } static void parse_script_a(const char *src) @@ -873,14 +878,17 @@ static BSTR get_script_from_file(const char *filename) static void run_from_file(const char *filename) { - BSTR script_str = get_script_from_file(filename); - - strict_dispid_check = FALSE; + BSTR script_str; + HRESULT hres; - if(script_str) - parse_script(SCRIPTITEM_GLOBALMEMBERS, script_str); + script_str = get_script_from_file(filename); + if(!script_str) + return; + strict_dispid_check = FALSE; + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, script_str); SysFreeString(script_str); + ok(hres == S_OK, "parse_script failed: %08x\n", hres); } static void run_from_res(const char *name) @@ -889,6 +897,7 @@ static void run_from_res(const char *name) DWORD size, len; BSTR str; HRSRC src; + HRESULT hres; strict_dispid_check = FALSE; test_name = name; @@ -905,10 +914,11 @@ static void run_from_res(const char *name) SET_EXPECT(global_success_d); SET_EXPECT(global_success_i); - parse_script(SCRIPTITEM_GLOBALMEMBERS, str); + hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, str); CHECK_CALLED(global_success_d); CHECK_CALLED(global_success_i); + ok(hres == S_OK, "parse_script failed: %08x\n", hres); SysFreeString(str); } @@ -1078,6 +1088,18 @@ static void run_tests(void) ok(hres != S_OK, "ParseScriptText have not failed\n"); } +static BOOL check_jscript(void) +{ + BSTR str; + HRESULT hres; + + str = a2bstr("if(!('localeCompare' in String.prototype)) throw 1;"); + hres = parse_script(0, str); + SysFreeString(str); + + return hres == S_OK; +} + START_TEST(run) { int argc; @@ -1087,7 +1109,9 @@ START_TEST(run) CoInitialize(NULL); - if(argc > 2) { + if(!check_jscript()) { + win_skip("Broken engine, probably too old\n"); + }else if(argc > 2) { run_from_file(argv[2]); }else { trace("invoke version 0\n"); -- 2.11.4.GIT