I ran the sputnik JS Compliance test in all the big 5 (IE, Firefox, Chrome, Opera and Safari with Webkit nightlies) and have found 19 testcases for which Webkit is the only JS engine that fails. I have referred to them by their Sputnik IDs, and the testcase can be found at the linked URL. For note, the testcases are: S7.8.5_A1.4_T2 S7.8.5_A2.4_T2 S10.1.5_A2.1_T3 S11.5.3_A4_T2 S11.8.4_A2.3_T1 S15.10.6.2_A11 S15.10.6.3_A11 S15.1.2.2_A1_T2 S15.1.2.3_A2_T3 S15.1.2.3_A2_T8 S15.1.2.3_A2_T9 S15.3.5.3_A2_T6 S15.4.4.10_A3_T3 S15.4.4.12_A2.1_T3 S15.4.4.6_A4_T1 S15.5.4.10_A1_T6 S15.5.4.10_A1_T7 S15.5.4.10_A1_T8 S15.5.4.10_A1_T9
Results with QtWebKit r56199: S7.8.5_A1.4_T2: FAIL: SyntaxError: Parse error S7.8.5_A2.4_T2: FAIL: SyntaxError: Parse error S10.1.5_A2.1_T3: FAIL: 'EvalError' has attribute DontEnum S10.1.5_A2.1_T3: FAIL: 'RangeError' has attribute DontEnum S10.1.5_A2.1_T3: FAIL: 'ReferenceError' has attribute DontEnum S10.1.5_A2.1_T3: FAIL: 'SyntaxError' has attribute DontEnum S10.1.5_A2.1_T3: FAIL: 'TypeError' has attribute DontEnum S10.1.5_A2.1_T3: FAIL: 'URIError' has attribute DontEnum S11.5.3_A4_T2: PASS S11.8.4_A2.3_T1: FAIL: ToNumber(first expression) is called first, and then ToNumber(second expression) S15.10.6.2_A11: FAIL: RegExp.prototype.exec.length === 1. Actual: 0 S15.10.6.3_A11: FAIL: RegExp.prototype.test.length === 1. Actual: 0 S15.1.2.2_A1_T2: FAIL: (1 / parseInt(-0)) should equal Infinity. Actual: -Infinity S15.1.2.3_A2_T3: FAIL: parseFloat("\u00A01.1") === parseFloat("1.1"). Actual: NaN S15.1.2.3_A2_T3: FAIL: parseFloat("\u00A0\u00A0-1.1") === parseFloat("-1.1"). Actual: NaN S15.1.2.3_A2_T8: FAIL: parseFloat("\u20281.1") === parseFloat("1.1"). Actual: NaN S15.1.2.3_A2_T8: FAIL: parseFloat("\u2028\u2028-1.1") === parseFloat("-1.1"). Actual: NaN S15.1.2.3_A2_T9: FAIL: parseFloat("\u20291.1") === parseFloat("1.1"). Actual: NaN S15.1.2.3_A2_T9: FAIL: parseFloat("\u2029\u2029-1.1") === parseFloat("-1.1"). Actual: NaN S15.3.5.3_A2_T6: FAIL: Not an object, throw a TypeError exception S15.4.4.10_A3_T3: FAIL: arr.length === 1. Actual: 0 S15.4.4.10_A3_T3: FAIL: arr[0] === "x". Actual: undefined S15.4.4.12_A2.1_T3: FAIL: arr.length === 0. Actual: 3 S15.4.4.12_A2.1_T3: FAIL: x[0] === 0. Actual: 3 S15.4.4.12_A2.1_T3: FAIL: x[1] === 1. Actual: undefined S15.4.4.12_A2.1_T3: FAIL: x[2] === 2. Actual: undefined S15.4.4.12_A2.1_T3: FAIL: x[3] === 3. Actual: undefined S15.4.4.6_A4_T1: FAIL: x.pop() === 1. Actual: undefined S15.5.4.10_A1_T6: FAIL: __matched[0]===__expected[0]. Actual: Matched is "undefined" and expected is "" S15.5.4.10_A1_T7: FAIL: __matched[0]===__expected[0]. Actual: Matched is "undefined" and expected is "" S15.5.4.10_A1_T8: FAIL: __matched[0]===__expected[0]. Actual: Matched is "undefined" and expected is "" S15.5.4.10_A1_T9: FAIL: __matched[0]===__expected[0]. Actual: Matched is "undefined" and expected i
On mac, I'm not seeing any passes. Instead of S11.5.3_A4_T2: PASS I get S11.5.3_A4_T2: FAIL: 1 / (-1 % -1) should equal -Infinity. Actual: Infinity S11.5.3_A4_T2: FAIL: 1 / (-1 % 1) should equal -Infinity. Actual: Infinity
A lot of these are easy fixes -- the fix for the various somebuiltin.function.length failures is simply to update a constant
Sputnik tests landed in trunk, see https://bugs.webkit.org/show_bug.cgi?id=38296
Sputnik has been superseded by test-262. *** This bug has been marked as a duplicate of bug 65579 ***