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 28 prefix sputnik 29 def FAIL_OK = FAIL, OKAY 30 31 ############################### BUGS ################################### 32 33 # '__proto__' should be treated as a normal property in JSON. 34 S15.12.2_A1: FAIL 35 36 ##################### DELIBERATE INCOMPATIBILITIES ##################### 37 38 # This tests precision of trignometric functions. We're slightly off 39 # from the implementation in libc (~ 1e-17) but it's not clear if we 40 # or they are closer to the right answer, or if it even matters. 41 S15.8.2.16_A7: PASS || FAIL_OK 42 S15.8.2.18_A7: PASS || FAIL_OK 43 S15.8.2.13_A23: PASS || FAIL_OK 44 45 # Sputnik tests (r97) assume RegExp.prototype is an Object, not a RegExp. 46 S15.10.6_A2: FAIL_OK 47 48 # We are silent in some regexp cases where the spec wants us to give 49 # errors, for compatibility. 50 S15.10.2.11_A1_T2: FAIL 51 S15.10.2.11_A1_T3: FAIL 52 53 # We are more lenient in which string character escapes we allow than 54 # the spec (7.8.4 p. 19) wants us to be. This is for compatibility. 55 S7.8.4_A4.3_T2: FAIL_OK 56 S7.8.4_A4.3_T2: FAIL_OK 57 S7.8.4_A6.2_T2: FAIL_OK 58 S7.8.4_A6.1_T4: FAIL_OK 59 S7.8.4_A4.3_T4: FAIL_OK 60 S7.8.4_A7.2_T2: FAIL_OK 61 S7.8.4_A7.1_T4: FAIL_OK 62 S7.8.4_A6.4_T2: FAIL_OK 63 S7.8.4_A7.4_T2: FAIL_OK 64 S7.8.4_A7.2_T4: FAIL_OK 65 S7.8.4_A4.3_T6: FAIL_OK 66 S7.8.4_A7.2_T6: FAIL_OK 67 S7.8.4_A4.3_T1: FAIL_OK 68 S7.8.4_A6.2_T1: FAIL_OK 69 S7.8.4_A4.3_T3: FAIL_OK 70 S7.8.4_A7.2_T1: FAIL_OK 71 S7.8.4_A6.4_T1: FAIL_OK 72 S7.8.4_A7.2_T3: FAIL_OK 73 S7.8.4_A7.4_T1: FAIL_OK 74 S7.8.4_A4.3_T5: FAIL_OK 75 S7.8.4_A7.2_T5: FAIL_OK 76 S7.8.4_A4.3_T1: FAIL_OK 77 S7.8.4_A6.2_T1: FAIL_OK 78 S7.8.4_A4.3_T3: FAIL_OK 79 S7.8.4_A7.2_T1: FAIL_OK 80 S7.8.4_A6.4_T1: FAIL_OK 81 S7.8.4_A7.2_T3: FAIL_OK 82 S7.8.4_A7.4_T1: FAIL_OK 83 S7.8.4_A4.3_T5: FAIL_OK 84 S7.8.4_A7.2_T5: FAIL_OK 85 86 # Sputnik expects unicode escape sequences in RegExp flags to be interpreted. 87 # The specification requires them to be passed uninterpreted to the RegExp 88 # constructor. We now implement that. 89 S7.8.5_A3.1_T7: FAIL_OK 90 S7.8.5_A3.1_T8: FAIL_OK 91 S7.8.5_A3.1_T9: FAIL_OK 92 93 # We allow some keywords to be used as identifiers. 94 S7.5.3_A1.15: FAIL_OK 95 S7.5.3_A1.18: FAIL_OK 96 S7.5.3_A1.21: FAIL_OK 97 S7.5.3_A1.22: FAIL_OK 98 S7.5.3_A1.23: FAIL_OK 99 S7.5.3_A1.24: FAIL_OK 100 S7.5.3_A1.26: FAIL_OK 101 102 # This checks for non-262 behavior 103 S12.6.4_A14_T1: PASS || FAIL_OK 104 S12.6.4_R1: PASS || FAIL_OK 105 S12.6.4_R2: PASS || FAIL_OK 106 S8.4_D2.1: PASS || FAIL_OK 107 S8.4_D2.2: PASS || FAIL_OK 108 S8.4_D2.3: PASS || FAIL_OK 109 S8.4_D2.4: PASS || FAIL_OK 110 S8.4_D2.5: PASS || FAIL_OK 111 S8.4_D2.6: PASS || FAIL_OK 112 S8.4_D2.7: PASS || FAIL_OK 113 S8.4_D1.1: PASS || FAIL_OK 114 S13.2_D1.2: PASS || FAIL_OK 115 S11.4.3_D1.2: PASS || FAIL_OK 116 S7.6_D1: PASS || FAIL_OK 117 S7.6_D2: PASS || FAIL_OK 118 S15.1.2.2_D1.2: PASS || FAIL_OK 119 S13_D1_T1: PASS || FAIL_OK 120 S14_D4_T3: PASS || FAIL_OK 121 S14_D7: PASS || FAIL_OK 122 S15.5.4.11_D1.1_T2: PASS || FAIL_OK 123 S15.5.4.11_D1.1_T4: PASS || FAIL_OK 124 S15.5.2_D2: PASS || FAIL_OK 125 S15.5.4.11_D1.1_T1: PASS || FAIL_OK 126 S15.5.4.11_D1.1_T3: PASS || FAIL_OK 127 S12.6.4_D1: PASS || FAIL_OK 128 S15.5.4.14_A1_T6: FAIL_OK 129 S15.5.4.14_A1_T7: FAIL_OK 130 S15.5.4.14_A1_T8: FAIL_OK 131 S15.5.4.14_A1_T9: FAIL_OK 132 S15.5.4.14_A2_T7: FAIL_OK 133 S15.10.2.12_A1_T1: FAIL_OK 134 S15.10.2.12_A2_T1: FAIL_OK 135 136 # We allow function declarations within statements 137 S12.6.2_A13_T1: FAIL_OK 138 S12.6.2_A13_T2: FAIL_OK 139 S12.6.4_A13_T1: FAIL_OK 140 S12.6.4_A13_T2: FAIL_OK 141 #S12.6.4_A13_T3: FAIL_OK 142 S15.3.4.2_A1_T1: FAIL_OK 143 144 # Linux and Mac defaults to extended 80 bit floating point format in the FPU. 145 # We follow the other major JS engines by keeping this default. 146 S8.5_A2.2: PASS, FAIL if $system == linux, FAIL if $system == macos 147 S8.5_A2.1: PASS, FAIL if $system == linux, FAIL if $system == macos 148 149 ##################### ES3 TESTS ######################### 150 # These tests check for ES3 semantics, and differ from ES5. 151 # When we follow ES5 semantics, it's ok to fail the test. 152 153 # Allow keywords as names of properties in object initialisers and 154 # in dot-notation property access. 155 S11.1.5_A4.1: FAIL_OK 156 S11.1.5_A4.2: FAIL_OK 157 158 # Don't throw type errors when iterating through the undefined object. 159 S9.9_A1: FAIL_OK 160 S9.9_A2: FAIL_OK 161 162 # The expected evaluation order of comparison operations changed. 163 S11.8.2_A2.3_T1: FAIL_OK 164 S11.8.3_A2.3_T1: FAIL_OK 165 166 # Calls builtins without an explicit receiver which means that 167 # undefined is passed to the builtin. The tests expect the global 168 # object to be passed which was true in ES3 but not in ES5. 169 S11.1.1_A2: FAIL_OK 170 S15.5.4.4_A1_T3: FAIL_OK 171 S15.5.4.5_A1_T3: FAIL_OK 172 S15.5.4.6_A1_T3: FAIL_OK 173 S15.5.4.7_A1_T3: FAIL_OK 174 S15.5.4.8_A1_T3: FAIL_OK 175 S15.5.4.9_A1_T3: FAIL_OK 176 S15.5.4.10_A1_T3: FAIL_OK 177 S15.5.4.11_A1_T3: FAIL_OK 178 S15.5.4.12_A1_T3: FAIL_OK 179 S15.5.4.13_A1_T3: FAIL_OK 180 S15.5.4.14_A1_T3: FAIL_OK 181 S15.5.4.15_A1_T3: FAIL_OK 182 183 # NaN, Infinity and undefined are read-only according to ES5. 184 S15.1.1.1_A2_T1: FAIL_OK # NaN 185 S15.1.1.1_A2_T2: FAIL_OK # NaN 186 S15.1.1.2_A2_T1: FAIL_OK # Infinity 187 # S15.1.1.2_A2_T2 would fail if it weren't bogus in r97. sputnik bug #45. 188 S15.1.1.3_A2_T1: FAIL_OK # undefined 189 S15.1.1.3_A2_T2: FAIL_OK # undefined 190 191 # Function.prototype.apply can handle arbitrary object as argument list. 192 S15.3.4.3_A6_T1: FAIL_OK 193 S15.3.4.3_A6_T4: FAIL_OK 194 195 # Array.prototype.to[Locale]String is generic in ES5. 196 S15.4.4.2_A2_T1: FAIL_OK 197 S15.4.4.3_A2_T1: FAIL_OK 198 199 ##################### SKIPPED TESTS ##################### 200 201 # These tests take a looong time to run in debug mode. 202 S15.1.3.2_A2.5_T1: PASS, SKIP if $mode == debug 203 S15.1.3.1_A2.5_T1: PASS, SKIP if $mode == debug 204 205 # V8 Bug: http://code.google.com/p/v8/issues/detail?id=1196 206 S8.7_A5_T2: FAIL 207 208 # Invalid test case (recent change adding var changes semantics) 209 S8.3_A1_T1: FAIL 210 # Test bug: http://code.google.com/p/sputniktests/issues/detail?id=35 211 S15.5.4.8_A1_T1: FAIL 212 # Invalid test case (recent change adding var changes semantics) 213 S15.3_A3_T1: FAIL 214 # Invalid test case (recent change adding var changes semantics) 215 S15.3_A3_T3: FAIL 216 217 [ $arch == arm ] 218 219 # BUG(3251225): Tests that timeout with --nocrankshaft. 220 S15.1.3.1_A2.5_T1: SKIP 221 S15.1.3.2_A2.5_T1: SKIP 222 S15.1.3.1_A2.4_T1: SKIP 223 S15.1.3.1_A2.5_T1: SKIP 224 S15.1.3.2_A2.4_T1: SKIP 225 S15.1.3.2_A2.5_T1: SKIP 226 S15.1.3.3_A2.3_T1: SKIP 227 S15.1.3.4_A2.3_T1: SKIP 228 S15.1.3.1_A2.5_T1: SKIP 229 S15.1.3.2_A2.5_T1: SKIP 230 231 [ $arch == mips ] 232 233 # BUG(3251225): Tests that timeout with --nocrankshaft. 234 S15.1.3.1_A2.5_T1: SKIP 235 S15.1.3.2_A2.5_T1: SKIP 236 S15.1.3.1_A2.4_T1: SKIP 237 S15.1.3.1_A2.5_T1: SKIP 238 S15.1.3.2_A2.4_T1: SKIP 239 S15.1.3.2_A2.5_T1: SKIP 240 S15.1.3.3_A2.3_T1: SKIP 241 S15.1.3.4_A2.3_T1: SKIP 242 S15.1.3.1_A2.5_T1: SKIP 243 S15.1.3.2_A2.5_T1: SKIP 244