Home | History | Annotate | Download | only in sputnik
      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