[PATCH 1/3] jscript: test that ActiveScriptSite_OnScriptError is called on script failure. (resend)

Reece Dunn msclrhd at googlemail.com
Thu Oct 7 02:28:46 CDT 2010


- Reece
-------------- next part --------------
From 3de5923e0d5bb6bf9c353a1235ceb7949a204b47 Mon Sep 17 00:00:00 2001
From: Reece Dunn <msclrhd at gmail.com>
Date: Wed, 6 Oct 2010 19:44:56 +0100
Subject: [PATCH 1/3] jscript: test that ActiveScriptSite_OnScriptError is called on script failure.

---
 dlls/jscript/tests/run.c |   48 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c
index 4df315c..e1a9bd1 100644
--- a/dlls/jscript/tests/run.c
+++ b/dlls/jscript/tests/run.c
@@ -36,6 +36,9 @@ static const CLSID CLSID_JScript =
 #define SET_EXPECT(func) \
     expect_ ## func = TRUE
 
+#define UNSET_EXPECT(func) \
+    expect_ ## func = FALSE
+
 #define SET_CALLED(func) \
     called_ ## func = TRUE
 
@@ -69,6 +72,7 @@ DEFINE_EXPECT(testobj_value);
 DEFINE_EXPECT(testobj_prop_d);
 DEFINE_EXPECT(testobj_noprop_d);
 DEFINE_EXPECT(GetItemInfo_testVal);
+DEFINE_EXPECT(ActiveScriptSite_OnScriptError);
 
 #define DISPID_GLOBAL_TESTPROPGET   0x1000
 #define DISPID_GLOBAL_TESTPROPPUT   0x1001
@@ -658,7 +662,8 @@ static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, S
 
 static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
 {
-    return E_NOTIMPL;
+    CHECK_EXPECT(ActiveScriptSite_OnScriptError);
+    return S_OK;
 }
 
 static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
@@ -812,7 +817,7 @@ static HRESULT parse_htmlscript(BSTR script_str)
     return hres;
 }
 
-static void parse_script_af(DWORD flags, const char *src)
+static HRESULT parse_script_ex_af(DWORD flags, const char *src)
 {
     BSTR tmp;
     HRESULT hres;
@@ -820,6 +825,19 @@ static void parse_script_af(DWORD flags, const char *src)
     tmp = a2bstr(src);
     hres = parse_script(flags, tmp);
     SysFreeString(tmp);
+
+    return hres;
+}
+
+static HRESULT parse_script_ex_a(const char *src)
+{
+    return parse_script_ex_af(SCRIPTITEM_GLOBALMEMBERS, src);
+}
+
+static void parse_script_af(DWORD flags, const char *src)
+{
+    HRESULT hres;
+    hres = parse_script_ex_af(flags, src);
     ok(hres == S_OK, "parse_script failed: %08x\n", hres);
 }
 
@@ -1062,11 +1080,15 @@ static void run_tests(void)
     CHECK_CALLED(global_propget_i);
 
     parse_script_a("testThis(this);");
+
     parse_script_a("(function () { testThis(this); })();");
 
     run_from_res("lang.js");
     run_from_res("api.js");
+
+    SET_EXPECT(ActiveScriptSite_OnScriptError);
     run_from_res("regexp.js");
+    todo_wine CHECK_CALLED(ActiveScriptSite_OnScriptError);
 
     test_isvisible(FALSE);
     test_isvisible(TRUE);
@@ -1084,14 +1106,26 @@ static void run_tests(void)
     ok(hres == S_OK, "ParseScriptText failed: %08x\n", hres);
     hres = parse_htmlscript_a("var a=1;\nif(a-->0) a=5;\n");
     ok(hres == S_OK, "ParseScriptText failed: %08x\n", hres);
+
+    SET_EXPECT(ActiveScriptSite_OnScriptError);
     hres = parse_htmlscript_a("var a=1;\nif(a\n-->0) a=5;\n");
-    ok(hres != S_OK, "ParseScriptText have not failed\n");
+    todo_wine ok(hres == 0x80020101, "ParseScriptText should have returned 0x80020101, got: 0x%08x\n", hres);
+    todo_wine CHECK_CALLED(ActiveScriptSite_OnScriptError);
+
+    SET_EXPECT(ActiveScriptSite_OnScriptError);
+    hres = parse_script_ex_a("{");
+    todo_wine ok(hres == 0x80020101, "ParseScriptText should have returned 0x80020101, got: 0x%08x\n", hres);
+    todo_wine CHECK_CALLED(ActiveScriptSite_OnScriptError);
+
+    SET_EXPECT(ActiveScriptSite_OnScriptError);
+    hres = parse_script_ex_a("new null;");
+    todo_wine ok(hres == 0x80020101, "ParseScriptText should have returned 0x80020101, got: 0x%08x\n", hres);
+    todo_wine CHECK_CALLED(ActiveScriptSite_OnScriptError);
 }
 
 static BOOL check_jscript(void)
 {
     IActiveScriptProperty *script_prop;
-    BSTR str;
     HRESULT hres;
 
     hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
@@ -1100,9 +1134,9 @@ static BOOL check_jscript(void)
         return FALSE;
     IActiveScriptProperty_Release(script_prop);
 
-    str = a2bstr("if(!('localeCompare' in String.prototype)) throw 1;");
-    hres = parse_script(0, str);
-    SysFreeString(str);
+    SET_EXPECT(ActiveScriptSite_OnScriptError);
+    hres = parse_script_ex_a("if(!('localeCompare' in String.prototype)) throw 1;");
+    UNSET_EXPECT(ActiveScriptSite_OnScriptError);
 
     return hres == S_OK;
 }
-- 
1.7.0.4


More information about the wine-patches mailing list