jscript: Skip tests on old jscript.dll.

This commit is contained in:
Jacek Caban 2010-01-23 23:58:23 +01:00 committed by Alexandre Julliard
parent 09651321e0
commit f623e3add8

View File

@ -726,7 +726,7 @@ static IActiveScript *create_script(void)
return script; return script;
} }
static void parse_script(DWORD flags, BSTR script_str) static HRESULT parse_script(DWORD flags, BSTR script_str)
{ {
IActiveScriptParse *parser; IActiveScriptParse *parser;
IActiveScript *engine; IActiveScript *engine;
@ -734,14 +734,14 @@ static void parse_script(DWORD flags, BSTR script_str)
engine = create_script(); engine = create_script();
if(!engine) if(!engine)
return; return S_OK;
hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser); hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptParse, (void**)&parser);
ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres); ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres);
if (FAILED(hres)) if (FAILED(hres))
{ {
IActiveScript_Release(engine); IActiveScript_Release(engine);
return; return hres;
} }
hres = IActiveScriptParse64_InitNew(parser); 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"); ok(script_disp != (IDispatch*)&Global, "script_disp == Global\n");
hres = IActiveScriptParse64_ParseScriptText(parser, script_str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL); 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); IDispatch_Release(script_disp);
IActiveScript_Release(engine); IActiveScript_Release(engine);
IUnknown_Release(parser); IUnknown_Release(parser);
return hres;
} }
static HRESULT parse_htmlscript(BSTR script_str) 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) static void parse_script_af(DWORD flags, const char *src)
{ {
BSTR tmp = a2bstr(src); BSTR tmp;
parse_script(flags, tmp); HRESULT hres;
tmp = a2bstr(src);
hres = parse_script(flags, tmp);
SysFreeString(tmp); SysFreeString(tmp);
ok(hres == S_OK, "parse_script failed: %08x\n", hres);
} }
static void parse_script_a(const char *src) 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) static void run_from_file(const char *filename)
{ {
BSTR script_str = get_script_from_file(filename); BSTR script_str;
HRESULT hres;
script_str = get_script_from_file(filename);
if(!script_str)
return;
strict_dispid_check = FALSE; strict_dispid_check = FALSE;
hres = parse_script(SCRIPTITEM_GLOBALMEMBERS, script_str);
if(script_str)
parse_script(SCRIPTITEM_GLOBALMEMBERS, script_str);
SysFreeString(script_str); SysFreeString(script_str);
ok(hres == S_OK, "parse_script failed: %08x\n", hres);
} }
static void run_from_res(const char *name) static void run_from_res(const char *name)
@ -889,6 +897,7 @@ static void run_from_res(const char *name)
DWORD size, len; DWORD size, len;
BSTR str; BSTR str;
HRSRC src; HRSRC src;
HRESULT hres;
strict_dispid_check = FALSE; strict_dispid_check = FALSE;
test_name = name; test_name = name;
@ -905,10 +914,11 @@ static void run_from_res(const char *name)
SET_EXPECT(global_success_d); SET_EXPECT(global_success_d);
SET_EXPECT(global_success_i); 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_d);
CHECK_CALLED(global_success_i); CHECK_CALLED(global_success_i);
ok(hres == S_OK, "parse_script failed: %08x\n", hres);
SysFreeString(str); SysFreeString(str);
} }
@ -1078,6 +1088,18 @@ static void run_tests(void)
ok(hres != S_OK, "ParseScriptText have not failed\n"); 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) START_TEST(run)
{ {
int argc; int argc;
@ -1087,7 +1109,9 @@ START_TEST(run)
CoInitialize(NULL); 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]); run_from_file(argv[2]);
}else { }else {
trace("invoke version 0\n"); trace("invoke version 0\n");