1# Copyright 2009 the V8 project authors. All rights reserved. 2# Redistribution and use in source and binary forms, with or without 3# modification, are permitted provided that the following conditions are 4# met: 5# 6# * Redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer. 8# * Redistributions in binary form must reproduce the above 9# copyright notice, this list of conditions and the following 10# disclaimer in the documentation and/or other materials provided 11# with the distribution. 12# * Neither the name of Google Inc. nor the names of its 13# contributors may be used to endorse or promote products derived 14# from this software without specific prior written permission. 15# 16# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28prefix sputnik 29def FAIL_OK = FAIL, OKAY 30 31##################### DELIBERATE INCOMPATIBILITIES ##################### 32 33# 900066: Deleting elements in .arguments should disconnect the 34# element from the actual arguments. Implementing this is nontrivial 35# and we have no indication that anything on the web depends on this 36# feature. 37S13_A13_T1: FAIL_OK 38S13_A13_T2: FAIL_OK 39S13_A13_T3: FAIL_OK 40 41# This tests precision of trignometric functions. We're slightly off 42# from the implementation in libc (~ 1e-17) but it's not clear if we 43# or they are closer to the right answer, or if it even matters. 44S15.8.2.16_A7: PASS || FAIL_OK 45S15.8.2.18_A7: PASS || FAIL_OK 46S15.8.2.13_A23: PASS || FAIL_OK 47 48# We allow calls to regexp exec() with no arguments to fail for 49# compatibility reasons. 50S15.10.6.2_A1_T16: FAIL_OK 51S15.10.6.3_A1_T16: FAIL_OK 52 53# We allow regexps to be called as functions for compatibility reasons. 54S15.10.7_A1_T1: FAIL_OK 55S15.10.7_A1_T2: FAIL_OK 56 57# We allow construct calls to built-in functions, and we allow built-in 58# functions to have prototypes. 59S15.1.2.1_A4.6: FAIL_OK 60S15.1.2.1_A4.7: FAIL_OK 61S15.1.2.2_A9.6: FAIL_OK 62S15.1.2.2_A9.7: FAIL_OK 63S15.1.2.3_A7.6: FAIL_OK 64S15.1.2.3_A7.7: FAIL_OK 65S15.1.2.4_A2.6: FAIL_OK 66S15.1.2.4_A2.7: FAIL_OK 67S15.1.2.5_A2.6: FAIL_OK 68S15.1.2.5_A2.7: FAIL_OK 69S15.1.3.1_A5.6: FAIL_OK 70S15.1.3.1_A5.7: FAIL_OK 71S15.1.3.2_A5.6: FAIL_OK 72S15.1.3.2_A5.7: FAIL_OK 73S15.1.3.3_A5.6: FAIL_OK 74S15.1.3.3_A5.7: FAIL_OK 75S15.1.3.4_A5.6: FAIL_OK 76S15.1.3.4_A5.7: FAIL_OK 77S15.10.6.2_A6: FAIL_OK 78S15.10.6.3_A6: FAIL_OK 79S15.10.6.4_A6: FAIL_OK 80S15.10.6.4_A7: FAIL_OK 81S15.2.4.2_A6: FAIL_OK 82S15.2.4.3_A6: FAIL_OK 83S15.2.4.4_A6: FAIL_OK 84S15.2.4.5_A6: FAIL_OK 85S15.2.4.6_A6: FAIL_OK 86S15.2.4.7_A6: FAIL_OK 87S15.3.4.2_A6: FAIL_OK 88S15.4.4.10_A5.6: FAIL_OK 89S15.4.4.10_A5.7: FAIL_OK 90S15.4.4.11_A7.6: FAIL_OK 91S15.4.4.11_A7.7: FAIL_OK 92S15.4.4.12_A5.6: FAIL_OK 93S15.4.4.12_A5.7: FAIL_OK 94S15.4.4.13_A5.6: FAIL_OK 95S15.4.4.13_A5.7: FAIL_OK 96S15.4.4.2_A4.6: FAIL_OK 97S15.4.4.3_A4.6: FAIL_OK 98S15.4.4.3_A4.6: FAIL_OK 99S15.4.4.4_A4.6: FAIL_OK 100S15.4.4.4_A4.7: FAIL_OK 101S15.4.4.5_A6.6: FAIL_OK 102S15.4.4.5_A6.7: FAIL_OK 103S15.4.4.6_A5.6: FAIL_OK 104S15.4.4.6_A5.7: FAIL_OK 105S15.4.4.7_A6.6: FAIL_OK 106S15.4.4.7_A6.7: FAIL_OK 107S15.4.4.8_A5.6: FAIL_OK 108S15.4.4.8_A5.7: FAIL_OK 109S15.4.4.9_A5.6: FAIL_OK 110S15.4.4.9_A5.7: FAIL_OK 111S15.5.4.10_A6: FAIL_OK 112S15.5.4.11_A6: FAIL_OK 113S15.5.4.12_A6: FAIL_OK 114S15.5.4.13_A6: FAIL_OK 115S15.5.4.14_A6: FAIL_OK 116S15.5.4.15_A6: FAIL_OK 117S15.5.4.16_A6: FAIL_OK 118S15.5.4.17_A6: FAIL_OK 119S15.5.4.18_A6: FAIL_OK 120S15.5.4.19_A6: FAIL_OK 121S15.5.4.4_A6: FAIL_OK 122S15.5.4.5_A6: FAIL_OK 123S15.5.4.6_A6: FAIL_OK 124S15.5.4.7_A6: FAIL_OK 125S15.5.4.9_A6: FAIL_OK 126S15.3.4.3_A12: FAIL_OK 127S15.3.4.4_A12: FAIL_OK 128S15.5.4.8_A6: FAIL_OK 129 130# We are silent in some regexp cases where the spec wants us to give 131# errors, for compatibility. 132S15.10.2.11_A1_T2: FAIL 133S15.10.2.11_A1_T3: FAIL 134S15.10.4.1_A5_T1: FAIL 135S15.10.4.1_A5_T2: FAIL 136S15.10.4.1_A5_T3: FAIL 137S15.10.4.1_A5_T4: FAIL 138S15.10.4.1_A5_T5: FAIL 139S15.10.4.1_A5_T6: FAIL 140S15.10.4.1_A5_T7: FAIL 141S15.10.4.1_A5_T8: FAIL 142S15.10.4.1_A5_T9: FAIL 143 144# We are more lenient in which string character escapes we allow than 145# the spec (7.8.4 p. 19) wants us to be. This is for compatibility. 146S7.8.4_A4.3_T2: FAIL_OK 147S7.8.4_A4.3_T2: FAIL_OK 148S7.8.4_A6.2_T2: FAIL_OK 149S7.8.4_A6.1_T4: FAIL_OK 150S7.8.4_A4.3_T4: FAIL_OK 151S7.8.4_A7.2_T2: FAIL_OK 152S7.8.4_A7.1_T4: FAIL_OK 153S7.8.4_A6.4_T2: FAIL_OK 154S7.8.4_A7.4_T2: FAIL_OK 155S7.8.4_A7.2_T4: FAIL_OK 156S7.8.4_A4.3_T6: FAIL_OK 157S7.8.4_A7.2_T6: FAIL_OK 158S7.8.4_A4.3_T1: FAIL_OK 159S7.8.4_A6.2_T1: FAIL_OK 160S7.8.4_A4.3_T3: FAIL_OK 161S7.8.4_A7.2_T1: FAIL_OK 162S7.8.4_A6.4_T1: FAIL_OK 163S7.8.4_A7.2_T3: FAIL_OK 164S7.8.4_A7.4_T1: FAIL_OK 165S7.8.4_A4.3_T5: FAIL_OK 166S7.8.4_A7.2_T5: FAIL_OK 167S7.8.4_A4.3_T1: FAIL_OK 168S7.8.4_A6.2_T1: FAIL_OK 169S7.8.4_A4.3_T3: FAIL_OK 170S7.8.4_A7.2_T1: FAIL_OK 171S7.8.4_A6.4_T1: FAIL_OK 172S7.8.4_A7.2_T3: FAIL_OK 173S7.8.4_A7.4_T1: FAIL_OK 174S7.8.4_A4.3_T5: FAIL_OK 175S7.8.4_A7.2_T5: FAIL_OK 176 177# We allow some keywords to be used as identifiers 178S7.5.3_A1.17: FAIL_OK 179S7.5.3_A1.26: FAIL_OK 180S7.5.3_A1.18: FAIL_OK 181S7.5.3_A1.27: FAIL_OK 182S7.5.3_A1.28: FAIL_OK 183S7.5.3_A1.19: FAIL_OK 184S7.5.3_A1.29: FAIL_OK 185S7.5.3_A1.1: FAIL_OK 186S7.5.3_A1.2: FAIL_OK 187S7.5.3_A1.3: FAIL_OK 188S7.5.3_A1.4: FAIL_OK 189S7.5.3_A1.5: FAIL_OK 190S7.5.3_A1.8: FAIL_OK 191S7.5.3_A1.9: FAIL_OK 192S7.5.3_A1.10: FAIL_OK 193S7.5.3_A1.11: FAIL_OK 194S7.5.3_A1.21: FAIL_OK 195S7.5.3_A1.12: FAIL_OK 196S7.5.3_A1.30: FAIL_OK 197S7.5.3_A1.31: FAIL_OK 198S7.5.3_A1.13: FAIL_OK 199S7.5.3_A1.22: FAIL_OK 200S7.5.3_A1.23: FAIL_OK 201S7.5.3_A1.14: FAIL_OK 202S7.5.3_A1.15: FAIL_OK 203S7.5.3_A1.24: FAIL_OK 204S7.5.3_A1.25: FAIL_OK 205S7.5.3_A1.16: FAIL_OK 206 207# This checks for non-262 behavior 208S12.6.4_A14_T1: PASS || FAIL_OK 209S12.6.4_R1: PASS || FAIL_OK 210S12.6.4_R2: PASS || FAIL_OK 211S8.4_D2.1: PASS || FAIL_OK 212S8.4_D2.2: PASS || FAIL_OK 213S8.4_D2.3: PASS || FAIL_OK 214S8.4_D2.4: PASS || FAIL_OK 215S8.4_D2.5: PASS || FAIL_OK 216S8.4_D2.6: PASS || FAIL_OK 217S8.4_D2.7: PASS || FAIL_OK 218S8.4_D1.1: PASS || FAIL_OK 219S13.2_D1.2: PASS || FAIL_OK 220S11.4.3_D1.2: PASS || FAIL_OK 221S7.6_D1: PASS || FAIL_OK 222S7.6_D2: PASS || FAIL_OK 223S15.1.2.2_D1.2: PASS || FAIL_OK 224S13_D1_T1: PASS || FAIL_OK 225S14_D4_T3: PASS || FAIL_OK 226S14_D7: PASS || FAIL_OK 227S15.5.4.11_D1.1_T2: PASS || FAIL_OK 228S15.5.4.11_D1.1_T4: PASS || FAIL_OK 229S15.5.2_D2: PASS || FAIL_OK 230S15.5.4.11_D1.1_T1: PASS || FAIL_OK 231S15.5.4.11_D1.1_T3: PASS || FAIL_OK 232S12.6.4_D1: PASS || FAIL_OK 233 234# We deliberately don't throw type errors when iterating through the 235# undefined object 236S9.9_A1: FAIL_OK 237S9.9_A2: FAIL_OK 238 239# We allow function declarations within statements 240S12.5_A9_T1: FAIL_OK 241S12.5_A9_T2: FAIL_OK 242# S12.6.2_A13_T3: FAIL_OK 243# S12.5_A9_T3: FAIL_OK 244# S12.6.1_A13_T3: FAIL_OK 245S12.1_A1: FAIL_OK 246S12.6.2_A13_T1: FAIL_OK 247S12.6.2_A13_T2: FAIL_OK 248S12.6.1_A13_T1: FAIL_OK 249S12.6.1_A13_T2: FAIL_OK 250S12.6.4_A13_T1: FAIL_OK 251S12.6.4_A13_T2: FAIL_OK 252#S12.6.4_A13_T3: FAIL_OK 253S15.3.4.2_A1_T1: FAIL_OK 254 255# Linux and Mac defaults to extended 80 bit floating point format in the FPU. 256# We follow the other major JS engines by keeping this default. 257S8.5_A2.2: PASS, FAIL if $system == linux, FAIL if $system == macos 258S8.5_A2.1: PASS, FAIL if $system == linux, FAIL if $system == macos 259 260##################### SKIPPED TESTS ##################### 261 262# These tests take a looong time to run in debug mode. 263S15.1.3.2_A2.5_T1: PASS, SKIP if $mode == debug 264S15.1.3.1_A2.5_T1: PASS, SKIP if $mode == debug 265 266 267# These tests fail because we had to add bugs to be compatible with JSC. See 268# http://code.google.com/p/chromium/issues/detail?id=1717 269S15.4.4_A1.1_T2: FAIL_OK 270S15.5.4.1_A1_T2: FAIL_OK 271S15.5.4_A1: FAIL_OK 272S15.5.4_A3: FAIL_OK 273S15.9.5.10_A1_T2: FAIL_OK 274S15.9.5.11_A1_T2: FAIL_OK 275S15.9.5.12_A1_T2: FAIL_OK 276S15.9.5.13_A1_T2: FAIL_OK 277S15.9.5.14_A1_T2: FAIL_OK 278S15.9.5.15_A1_T2: FAIL_OK 279S15.9.5.16_A1_T2: FAIL_OK 280S15.9.5.17_A1_T2: FAIL_OK 281S15.9.5.18_A1_T2: FAIL_OK 282S15.9.5.19_A1_T2: FAIL_OK 283S15.9.5.20_A1_T2: FAIL_OK 284S15.9.5.21_A1_T2: FAIL_OK 285S15.9.5.22_A1_T2: FAIL_OK 286S15.9.5.23_A1_T2: FAIL_OK 287S15.9.5.24_A1_T2: FAIL_OK 288S15.9.5.25_A1_T2: FAIL_OK 289S15.9.5.26_A1_T2: FAIL_OK 290S15.9.5.27_A1_T2: FAIL_OK 291S15.9.5.28_A1_T2: FAIL_OK 292S15.9.5.29_A1_T2: FAIL_OK 293S15.9.5.2_A1_T2: FAIL_OK 294S15.9.5.30_A1_T2: FAIL_OK 295S15.9.5.31_A1_T2: FAIL_OK 296S15.9.5.32_A1_T2: FAIL_OK 297S15.9.5.33_A1_T2: FAIL_OK 298S15.9.5.34_A1_T2: FAIL_OK 299S15.9.5.35_A1_T2: FAIL_OK 300S15.9.5.36_A1_T2: FAIL_OK 301S15.9.5.37_A1_T2: FAIL_OK 302S15.9.5.38_A1_T2: FAIL_OK 303S15.9.5.39_A1_T2: FAIL_OK 304S15.9.5.3_A1_T2: FAIL_OK 305S15.9.5.40_A1_T2: FAIL_OK 306S15.9.5.41_A1_T2: FAIL_OK 307S15.9.5.42_A1_T2: FAIL_OK 308S15.9.5.4_A1_T2: FAIL_OK 309S15.9.5.5_A1_T2: FAIL_OK 310S15.9.5.6_A1_T2: FAIL_OK 311S15.9.5.7_A1_T2: FAIL_OK 312S15.9.5.8_A1_T2: FAIL_OK 313S15.9.5.9_A1_T2: FAIL_OK 314 315# Regexps have type "function", not "object". 316S11.4.3_A3.6: FAIL_OK 317S15.10.7_A3_T2: FAIL_OK 318S15.10.7_A3_T1: FAIL_OK 319 320[ $arch == mips ] 321 322# Skip all tests on MIPS. 323*: SKIP 324