diff options
author | David Fugate <dfugate@microsoft.com> | 2011-11-11 11:58:16 -0800 |
---|---|---|
committer | David Fugate <dfugate@microsoft.com> | 2011-11-11 11:58:16 -0800 |
commit | b54a4b755bd87ab327fdc3edc9918c20a91b2385 (patch) | |
tree | 91e882d6bd45ce4f12e4441e005a8a4663d8b29f | |
parent | 6b07133a5eb006cf67f90616d6232be78f5814cf (diff) | |
parent | c6a4e6846327dbb070353f0d7fa95a69d59d97e8 (diff) | |
download | test262-b54a4b755bd87ab327fdc3edc9918c20a91b2385.tar.gz |
Merge.
-rw-r--r-- | test/config/excludelist.xml | 4 | ||||
-rw-r--r-- | test/harness/sth.js | 43 | ||||
-rw-r--r-- | test/suite/ch15/15.3/15.3.4/15.3.4.5/S15.3.4.5_A5.js | 2 | ||||
-rw-r--r-- | website/harness/sth.js | 43 |
4 files changed, 86 insertions, 6 deletions
diff --git a/test/config/excludelist.xml b/test/config/excludelist.xml index 947ea8f89..4b0fee7db 100644 --- a/test/config/excludelist.xml +++ b/test/config/excludelist.xml @@ -1,8 +1,6 @@ <?xml version="1.0" encoding="utf-8" ?>
<excludeList>
- <test id="S10.4.2.1_A1">Opera crash - to be investigated</test>
- <test id="S15.3.4.5_A5">Opera crash - to be investigated</test>
- <test id="S8.6.2_A8">Opera crash - to be investigated</test>
+ <test id="S10.4.2.1_A1">Opera12pre-alpha1116 crash - to be investigated</test>
<test id="10.4.2-2-c-1">JS to JSON conversion issue</test>
diff --git a/test/harness/sth.js b/test/harness/sth.js index 491eeedf5..48222d071 100644 --- a/test/harness/sth.js +++ b/test/harness/sth.js @@ -99,6 +99,45 @@ function BrowserRunner() { /* Run the test. */
this.run = function (test, code) {
+
+ //--Detect proper window.onerror support
+ if (instance.supportsWindowOnerror===undefined) {
+ var iframePrereqs = document.createElement("iframe");
+ iframePrereqs.setAttribute("id", "prereqsIframe");
+ if (!/firefox/i.test(navigator.userAgent)) {
+ iframePrereqs.setAttribute("style", "display:none");
+ }
+ document.body.appendChild(iframePrereqs);
+
+ var iwinPrereqs = iframePrereqs.contentWindow;
+ var idocPrereqs = iwinPrereqs.document;
+ idocPrereqs.open();
+
+ iwinPrereqs.failCount = 0;
+
+ var stuff = [
+ "window.onerror = function(a, b, c) { this.failCount++; }",
+ "va xyz =",
+ "throw Error();"
+ ];
+
+ for(var i in stuff) {
+ idocPrereqs.writeln("<script type='text/javascript'>");
+ idocPrereqs.writeln(stuff[i]);
+ idocPrereqs.writeln("</script>");
+ }
+ idocPrereqs.close();
+
+ //TODO - 500ms *should* be a sufficient delay
+ setTimeout(function() {
+ instance.supportsWindowOnerror = iwinPrereqs.failCount === 2;
+ //alert(iwinPrereqs.failCount);
+ document.body.removeChild(iframePrereqs);
+ instance.run(test, code);
+ }, 500);
+ return;
+ }
+
currentTest = {};
for (var tempIndex in test) {
if (test.hasOwnProperty(tempIndex)) {
@@ -106,6 +145,8 @@ function BrowserRunner() { }
}
currentTest.code = code;
+
+
iframe = document.createElement("iframe");
iframe.setAttribute("id", "runnerIframe");
@@ -167,7 +208,7 @@ function BrowserRunner() { //Run the code
idoc.writeln("<script type='text/javascript'>");
- if (/opera/i.test(navigator.userAgent)) { //Opera doesn't support window.onerror
+ if (! instance.supportsWindowOnerror) {
idoc.writeln("try {eval(\"" + this.convertForEval(code) + "\");} catch(e) {window.onerror(e.toString(), null, null);}");
} else {
idoc.writeln(code);
diff --git a/test/suite/ch15/15.3/15.3.4/15.3.4.5/S15.3.4.5_A5.js b/test/suite/ch15/15.3/15.3.4/15.3.4.5/S15.3.4.5_A5.js index d369b69b2..c80624e16 100644 --- a/test/suite/ch15/15.3/15.3.4/15.3.4.5/S15.3.4.5_A5.js +++ b/test/suite/ch15/15.3/15.3.4/15.3.4.5/S15.3.4.5_A5.js @@ -11,7 +11,7 @@ function construct(f, args) { var bound = Function.prototype.bind.apply(f, [null].concat(args)); return new bound(); } -var d = construct(Date, [1957, 5, 27]); +var d = construct(Date, [1957, 4, 27]); if (Object.prototype.toString.call(d) !== '[object Date]') { $ERROR('Using the Date constructor via .bind did not create a Date.'); } diff --git a/website/harness/sth.js b/website/harness/sth.js index 491eeedf5..48222d071 100644 --- a/website/harness/sth.js +++ b/website/harness/sth.js @@ -99,6 +99,45 @@ function BrowserRunner() { /* Run the test. */
this.run = function (test, code) {
+
+ //--Detect proper window.onerror support
+ if (instance.supportsWindowOnerror===undefined) {
+ var iframePrereqs = document.createElement("iframe");
+ iframePrereqs.setAttribute("id", "prereqsIframe");
+ if (!/firefox/i.test(navigator.userAgent)) {
+ iframePrereqs.setAttribute("style", "display:none");
+ }
+ document.body.appendChild(iframePrereqs);
+
+ var iwinPrereqs = iframePrereqs.contentWindow;
+ var idocPrereqs = iwinPrereqs.document;
+ idocPrereqs.open();
+
+ iwinPrereqs.failCount = 0;
+
+ var stuff = [
+ "window.onerror = function(a, b, c) { this.failCount++; }",
+ "va xyz =",
+ "throw Error();"
+ ];
+
+ for(var i in stuff) {
+ idocPrereqs.writeln("<script type='text/javascript'>");
+ idocPrereqs.writeln(stuff[i]);
+ idocPrereqs.writeln("</script>");
+ }
+ idocPrereqs.close();
+
+ //TODO - 500ms *should* be a sufficient delay
+ setTimeout(function() {
+ instance.supportsWindowOnerror = iwinPrereqs.failCount === 2;
+ //alert(iwinPrereqs.failCount);
+ document.body.removeChild(iframePrereqs);
+ instance.run(test, code);
+ }, 500);
+ return;
+ }
+
currentTest = {};
for (var tempIndex in test) {
if (test.hasOwnProperty(tempIndex)) {
@@ -106,6 +145,8 @@ function BrowserRunner() { }
}
currentTest.code = code;
+
+
iframe = document.createElement("iframe");
iframe.setAttribute("id", "runnerIframe");
@@ -167,7 +208,7 @@ function BrowserRunner() { //Run the code
idoc.writeln("<script type='text/javascript'>");
- if (/opera/i.test(navigator.userAgent)) { //Opera doesn't support window.onerror
+ if (! instance.supportsWindowOnerror) {
idoc.writeln("try {eval(\"" + this.convertForEval(code) + "\");} catch(e) {window.onerror(e.toString(), null, null);}");
} else {
idoc.writeln(code);
|