summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorolehougaard@google.com <olehougaard@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-28 11:49:13 +0000
committerolehougaard@google.com <olehougaard@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-11-28 11:49:13 +0000
commit6a30905191a50cd0c8fd9f20c25cf38842b572c9 (patch)
treec22082bba93fdc09eda982471a91254e824d35a5
parent47aaac4a737067b17d5ba773086db540669d5549 (diff)
downloadchromium_src-6a30905191a50cd0c8fd9f20c25cf38842b572c9.zip
chromium_src-6a30905191a50cd0c8fd9f20c25cf38842b572c9.tar.gz
chromium_src-6a30905191a50cd0c8fd9f20c25cf38842b572c9.tar.bz2
Rebaselined test that expected non-conformant evaluation order of comparisons.
Review URL: http://codereview.chromium.org/12805 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6113 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/README5
-rw-r--r--webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/exception-sequencing-binops2-expected.txt174
-rw-r--r--webkit/tools/layout_tests/test_lists/win/tests_fixable.txt1
3 files changed, 179 insertions, 1 deletions
diff --git a/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/README b/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/README
index 3dae1da..e23018a 100644
--- a/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/README
+++ b/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/README
@@ -47,6 +47,11 @@ cyclic-prototypes-expected.txt
--------------------------
Exception text is different in v8
+exception-sequencing-binops2-excepted.txt
+--------------------------
+V8 follows the ECMA 262 specification w.r.t. the evaluation order of
+comparisons. The latest JSC doesn't.
+
prefix-syntax.html
postfix-syntax.html
--------------------------
diff --git a/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/exception-sequencing-binops2-expected.txt b/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/exception-sequencing-binops2-expected.txt
new file mode 100644
index 0000000..d1adeb0
--- /dev/null
+++ b/webkit/data/layout_tests/platform/chromium-win/LayoutTests/fast/js/exception-sequencing-binops2-expected.txt
@@ -0,0 +1,174 @@
+Test exception handling with various arithmetic and logic operators, it checks the following things:
+In assignment expressions the lefthand side is not modified if the right hand side throws
+If the left hand side of a binary operator throws then the right hand should not be executed
+If valueOf/toString throws in the left hand expression of a binop it does not prevent evaluation of the right hand expression, but does prevent evaluation of toString/valueOf on the rhs.
+PASS: Handled "1 < valueOfThrower" correctly.
+PASS: Handled "1 < toStringThrower" correctly.
+PASS: Handled "1 < throwingProperty" correctly.
+PASS: Handled "1 < ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 < getterThrower.value" correctly.
+PASS: Handled "'string' < valueOfThrower" correctly.
+PASS: Handled "'string' < toStringThrower" correctly.
+PASS: Handled "'string' < throwingProperty" correctly.
+PASS: Handled "'string' < ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' < getterThrower.value" correctly.
+PASS: Handled "valueOfThrower < rhsNonZeroNum" correctly.
+PASS: Handled "toStringThrower < rhsNonZeroNum" correctly.
+PASS: Handled "throwingProperty < rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty < rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value < rhsNonZeroNum" correctly.
+PASS: Handled "valueOfThrower < rhsToStringThrower" correctly.
+PASS: Handled "toStringThrower < rhsToStringThrower" correctly.
+PASS: Handled "throwingProperty < rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty < rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value < rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower < rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower < rhsGetterTester.value" correctly.
+PASS: Handled "1 <= valueOfThrower" correctly.
+PASS: Handled "1 <= toStringThrower" correctly.
+PASS: Handled "1 <= throwingProperty" correctly.
+PASS: Handled "1 <= ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 <= getterThrower.value" correctly.
+PASS: Handled "'string' <= valueOfThrower" correctly.
+PASS: Handled "'string' <= toStringThrower" correctly.
+PASS: Handled "'string' <= throwingProperty" correctly.
+PASS: Handled "'string' <= ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' <= getterThrower.value" correctly.
+FAIL: "valueOfThrower <= rhsNonZeroNum" threw exception, but executed right hand half of expression
+FAIL: "toStringThrower <= rhsNonZeroNum" threw exception, but executed right hand half of expression
+PASS: Handled "throwingProperty <= rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty <= rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value <= rhsNonZeroNum" correctly.
+FAIL: "valueOfThrower <= rhsToStringThrower" threw exception, but executed right hand half of expression
+FAIL: "toStringThrower <= rhsToStringThrower" threw exception, but executed right hand half of expression
+PASS: Handled "throwingProperty <= rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty <= rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value <= rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower <= rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower <= rhsGetterTester.value" correctly.
+PASS: Handled "1 >= valueOfThrower" correctly.
+PASS: Handled "1 >= toStringThrower" correctly.
+PASS: Handled "1 >= throwingProperty" correctly.
+PASS: Handled "1 >= ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 >= getterThrower.value" correctly.
+PASS: Handled "'string' >= valueOfThrower" correctly.
+PASS: Handled "'string' >= toStringThrower" correctly.
+PASS: Handled "'string' >= throwingProperty" correctly.
+PASS: Handled "'string' >= ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' >= getterThrower.value" correctly.
+PASS: Handled "valueOfThrower >= rhsNonZeroNum" correctly.
+PASS: Handled "toStringThrower >= rhsNonZeroNum" correctly.
+PASS: Handled "throwingProperty >= rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty >= rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value >= rhsNonZeroNum" correctly.
+PASS: Handled "valueOfThrower >= rhsToStringThrower" correctly.
+PASS: Handled "toStringThrower >= rhsToStringThrower" correctly.
+PASS: Handled "throwingProperty >= rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty >= rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value >= rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower >= rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower >= rhsGetterTester.value" correctly.
+PASS: Handled "1 > valueOfThrower" correctly.
+PASS: Handled "1 > toStringThrower" correctly.
+PASS: Handled "1 > throwingProperty" correctly.
+PASS: Handled "1 > ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 > getterThrower.value" correctly.
+PASS: Handled "'string' > valueOfThrower" correctly.
+PASS: Handled "'string' > toStringThrower" correctly.
+PASS: Handled "'string' > throwingProperty" correctly.
+PASS: Handled "'string' > ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' > getterThrower.value" correctly.
+FAIL: "valueOfThrower > rhsNonZeroNum" threw exception, but executed right hand half of expression
+FAIL: "toStringThrower > rhsNonZeroNum" threw exception, but executed right hand half of expression
+PASS: Handled "throwingProperty > rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty > rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value > rhsNonZeroNum" correctly.
+FAIL: "valueOfThrower > rhsToStringThrower" threw exception, but executed right hand half of expression
+FAIL: "toStringThrower > rhsToStringThrower" threw exception, but executed right hand half of expression
+PASS: Handled "throwingProperty > rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty > rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value > rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower > rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower > rhsGetterTester.value" correctly.
+PASS: Handled "1 == valueOfThrower" correctly.
+PASS: Handled "1 == toStringThrower" correctly.
+PASS: Handled "1 == throwingProperty" correctly.
+PASS: Handled "1 == ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 == getterThrower.value" correctly.
+PASS: Handled "'string' == valueOfThrower" correctly.
+PASS: Handled "'string' == toStringThrower" correctly.
+PASS: Handled "'string' == throwingProperty" correctly.
+PASS: Handled "'string' == ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' == getterThrower.value" correctly.
+PASS: Handled "throwingProperty == rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty == rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value == rhsNonZeroNum" correctly.
+PASS: Handled "throwingProperty == rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty == rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value == rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower == rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower == rhsGetterTester.value" correctly.
+PASS: Handled "1 != valueOfThrower" correctly.
+PASS: Handled "1 != toStringThrower" correctly.
+PASS: Handled "1 != throwingProperty" correctly.
+PASS: Handled "1 != ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 != getterThrower.value" correctly.
+PASS: Handled "'string' != valueOfThrower" correctly.
+PASS: Handled "'string' != toStringThrower" correctly.
+PASS: Handled "'string' != throwingProperty" correctly.
+PASS: Handled "'string' != ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' != getterThrower.value" correctly.
+PASS: Handled "throwingProperty != rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty != rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value != rhsNonZeroNum" correctly.
+PASS: Handled "throwingProperty != rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty != rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value != rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower != rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower != rhsGetterTester.value" correctly.
+PASS: Handled "1 << valueOfThrower" correctly.
+PASS: Handled "1 << toStringThrower" correctly.
+PASS: Handled "1 << throwingProperty" correctly.
+PASS: Handled "1 << ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 << getterThrower.value" correctly.
+PASS: Handled "'string' << valueOfThrower" correctly.
+PASS: Handled "'string' << toStringThrower" correctly.
+PASS: Handled "'string' << throwingProperty" correctly.
+PASS: Handled "'string' << ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' << getterThrower.value" correctly.
+PASS: Handled "valueOfThrower << rhsNonZeroNum" correctly.
+PASS: Handled "toStringThrower << rhsNonZeroNum" correctly.
+PASS: Handled "throwingProperty << rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty << rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value << rhsNonZeroNum" correctly.
+PASS: Handled "valueOfThrower << rhsToStringThrower" correctly.
+PASS: Handled "toStringThrower << rhsToStringThrower" correctly.
+PASS: Handled "throwingProperty << rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty << rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value << rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower << rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower << rhsGetterTester.value" correctly.
+PASS: Handled "1 >> valueOfThrower" correctly.
+PASS: Handled "1 >> toStringThrower" correctly.
+PASS: Handled "1 >> throwingProperty" correctly.
+PASS: Handled "1 >> ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "1 >> getterThrower.value" correctly.
+PASS: Handled "'string' >> valueOfThrower" correctly.
+PASS: Handled "'string' >> toStringThrower" correctly.
+PASS: Handled "'string' >> throwingProperty" correctly.
+PASS: Handled "'string' >> ({get throwingProperty(){ throw "throwing property" }}).throwingProperty" correctly.
+PASS: Handled "'string' >> getterThrower.value" correctly.
+PASS: Handled "valueOfThrower >> rhsNonZeroNum" correctly.
+PASS: Handled "toStringThrower >> rhsNonZeroNum" correctly.
+PASS: Handled "throwingProperty >> rhsNonZeroNum" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty >> rhsNonZeroNum" correctly.
+PASS: Handled "getterThrower.value >> rhsNonZeroNum" correctly.
+PASS: Handled "valueOfThrower >> rhsToStringThrower" correctly.
+PASS: Handled "toStringThrower >> rhsToStringThrower" correctly.
+PASS: Handled "throwingProperty >> rhsToStringThrower" correctly.
+PASS: Handled "({get throwingProperty(){ throw "throwing property" }}).throwingProperty >> rhsToStringThrower" correctly.
+PASS: Handled "getterThrower.value >> rhsToStringThrower" correctly.
+PASS: Handled "valueOfThrower >> rhsGetterTester.value" correctly.
+PASS: Handled "toStringThrower >> rhsGetterTester.value" correctly.
+Passed 160 of 168 tests.
+
diff --git a/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt b/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt
index 595467d..acbb35a 100644
--- a/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt
+++ b/webkit/tools/layout_tests/test_lists/win/tests_fixable.txt
@@ -543,7 +543,6 @@ LayoutTests/http/tests/security/dataURL/xss-DENIED-to-data-url-sub-frame.html =
LayoutTests/fast/js/constructor-attributes.html = FAIL
LayoutTests/fast/js/eval-cross-window.html = FAIL
LayoutTests/fast/js/eval-keyword-vs-function.html = FAIL
-LayoutTests/fast/js/exception-sequencing-binops2.html = FAIL
LayoutTests/fast/js/exception-try-finally-scope-error.html = FAIL
LayoutTests/fast/js/function-dot-arguments-and-caller.html = FAIL
LayoutTests/fast/js/global-recursion-on-full-stack.html = FAIL