• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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############################### BUGS ###################################
32
33# '__proto__' should be treated as a normal property in JSON.
34S15.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.
41S15.8.2.16_A7: PASS || FAIL_OK
42S15.8.2.18_A7: PASS || FAIL_OK
43S15.8.2.13_A23: PASS || FAIL_OK
44
45# Sputnik tests (r97) assume RegExp.prototype is an Object, not a RegExp.
46S15.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.
50S15.10.2.11_A1_T2: FAIL
51S15.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.
55S7.8.4_A4.3_T2: FAIL_OK
56S7.8.4_A4.3_T2: FAIL_OK
57S7.8.4_A6.2_T2: FAIL_OK
58S7.8.4_A6.1_T4: FAIL_OK
59S7.8.4_A4.3_T4: FAIL_OK
60S7.8.4_A7.2_T2: FAIL_OK
61S7.8.4_A7.1_T4: FAIL_OK
62S7.8.4_A6.4_T2: FAIL_OK
63S7.8.4_A7.4_T2: FAIL_OK
64S7.8.4_A7.2_T4: FAIL_OK
65S7.8.4_A4.3_T6: FAIL_OK
66S7.8.4_A7.2_T6: FAIL_OK
67S7.8.4_A4.3_T1: FAIL_OK
68S7.8.4_A6.2_T1: FAIL_OK
69S7.8.4_A4.3_T3: FAIL_OK
70S7.8.4_A7.2_T1: FAIL_OK
71S7.8.4_A6.4_T1: FAIL_OK
72S7.8.4_A7.2_T3: FAIL_OK
73S7.8.4_A7.4_T1: FAIL_OK
74S7.8.4_A4.3_T5: FAIL_OK
75S7.8.4_A7.2_T5: FAIL_OK
76S7.8.4_A4.3_T1: FAIL_OK
77S7.8.4_A6.2_T1: FAIL_OK
78S7.8.4_A4.3_T3: FAIL_OK
79S7.8.4_A7.2_T1: FAIL_OK
80S7.8.4_A6.4_T1: FAIL_OK
81S7.8.4_A7.2_T3: FAIL_OK
82S7.8.4_A7.4_T1: FAIL_OK
83S7.8.4_A4.3_T5: FAIL_OK
84S7.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.
89S7.8.5_A3.1_T7: FAIL_OK
90S7.8.5_A3.1_T8: FAIL_OK
91S7.8.5_A3.1_T9: FAIL_OK
92
93# We allow some keywords to be used as identifiers.
94S7.5.3_A1.15: FAIL_OK
95S7.5.3_A1.18: FAIL_OK
96S7.5.3_A1.21: FAIL_OK
97S7.5.3_A1.22: FAIL_OK
98S7.5.3_A1.23: FAIL_OK
99S7.5.3_A1.24: FAIL_OK
100S7.5.3_A1.26: FAIL_OK
101
102# This checks for non-262 behavior
103S12.6.4_A14_T1: PASS || FAIL_OK
104S12.6.4_R1: PASS || FAIL_OK
105S12.6.4_R2: PASS || FAIL_OK
106S8.4_D2.1: PASS || FAIL_OK
107S8.4_D2.2: PASS || FAIL_OK
108S8.4_D2.3: PASS || FAIL_OK
109S8.4_D2.4: PASS || FAIL_OK
110S8.4_D2.5: PASS || FAIL_OK
111S8.4_D2.6: PASS || FAIL_OK
112S8.4_D2.7: PASS || FAIL_OK
113S8.4_D1.1: PASS || FAIL_OK
114S13.2_D1.2: PASS || FAIL_OK
115S11.4.3_D1.2: PASS || FAIL_OK
116S7.6_D1: PASS || FAIL_OK
117S7.6_D2: PASS || FAIL_OK
118S15.1.2.2_D1.2: PASS || FAIL_OK
119S13_D1_T1: PASS || FAIL_OK
120S14_D4_T3: PASS || FAIL_OK
121S14_D7: PASS || FAIL_OK
122S15.5.4.11_D1.1_T2: PASS || FAIL_OK
123S15.5.4.11_D1.1_T4: PASS || FAIL_OK
124S15.5.2_D2: PASS || FAIL_OK
125S15.5.4.11_D1.1_T1: PASS || FAIL_OK
126S15.5.4.11_D1.1_T3: PASS || FAIL_OK
127S12.6.4_D1: PASS || FAIL_OK
128S15.5.4.14_A1_T6: FAIL_OK
129S15.5.4.14_A1_T7: FAIL_OK
130S15.5.4.14_A1_T8: FAIL_OK
131S15.5.4.14_A1_T9: FAIL_OK
132S15.5.4.14_A2_T7: FAIL_OK
133S15.10.2.12_A1_T1: FAIL_OK
134S15.10.2.12_A2_T1: FAIL_OK
135
136# We allow function declarations within statements
137S12.6.2_A13_T1: FAIL_OK
138S12.6.2_A13_T2: FAIL_OK
139S12.6.4_A13_T1: FAIL_OK
140S12.6.4_A13_T2: FAIL_OK
141#S12.6.4_A13_T3: FAIL_OK
142S15.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.
146S8.5_A2.2: PASS, FAIL if $system == linux, FAIL if $system == macos
147S8.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.
155S11.1.5_A4.1: FAIL_OK
156S11.1.5_A4.2: FAIL_OK
157
158# Don't throw type errors when iterating through the undefined object.
159S9.9_A1: FAIL_OK
160S9.9_A2: FAIL_OK
161
162# The expected evaluation order of comparison operations changed.
163S11.8.2_A2.3_T1: FAIL_OK
164S11.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.
169S11.1.1_A2: FAIL_OK
170S15.5.4.4_A1_T3: FAIL_OK
171S15.5.4.5_A1_T3: FAIL_OK
172S15.5.4.6_A1_T3: FAIL_OK
173S15.5.4.7_A1_T3: FAIL_OK
174S15.5.4.8_A1_T3: FAIL_OK
175S15.5.4.9_A1_T3: FAIL_OK
176S15.5.4.10_A1_T3: FAIL_OK
177S15.5.4.11_A1_T3: FAIL_OK
178S15.5.4.12_A1_T3: FAIL_OK
179S15.5.4.13_A1_T3: FAIL_OK
180S15.5.4.14_A1_T3: FAIL_OK
181S15.5.4.15_A1_T3: FAIL_OK
182
183# NaN, Infinity and undefined are read-only according to ES5.
184S15.1.1.1_A2_T1: FAIL_OK  # NaN
185S15.1.1.1_A2_T2: FAIL_OK  # NaN
186S15.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.
188S15.1.1.3_A2_T1: FAIL_OK  # undefined
189S15.1.1.3_A2_T2: FAIL_OK  # undefined
190
191# Function.prototype.apply can handle arbitrary object as argument list.
192S15.3.4.3_A6_T1: FAIL_OK
193S15.3.4.3_A6_T4: FAIL_OK
194
195# Array.prototype.to[Locale]String is generic in ES5.
196S15.4.4.2_A2_T1: FAIL_OK
197S15.4.4.3_A2_T1: FAIL_OK
198
199##################### SKIPPED TESTS #####################
200
201# These tests take a looong time to run in debug mode.
202S15.1.3.2_A2.5_T1: PASS, SKIP if $mode == debug
203S15.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
206S8.7_A5_T2: FAIL
207
208# Invalid test case (recent change adding var changes semantics)
209S8.3_A1_T1: FAIL
210# Test bug: http://code.google.com/p/sputniktests/issues/detail?id=35
211S15.5.4.8_A1_T1: FAIL
212# Invalid test case (recent change adding var changes semantics)
213S15.3_A3_T1: FAIL
214# Invalid test case (recent change adding var changes semantics)
215S15.3_A3_T3: FAIL
216
217[ $arch == arm ]
218
219# BUG(3251225): Tests that timeout with --nocrankshaft.
220S15.1.3.1_A2.5_T1: SKIP
221S15.1.3.2_A2.5_T1: SKIP
222S15.1.3.1_A2.4_T1: SKIP
223S15.1.3.1_A2.5_T1: SKIP
224S15.1.3.2_A2.4_T1: SKIP
225S15.1.3.2_A2.5_T1: SKIP
226S15.1.3.3_A2.3_T1: SKIP
227S15.1.3.4_A2.3_T1: SKIP
228S15.1.3.1_A2.5_T1: SKIP
229S15.1.3.2_A2.5_T1: SKIP
230
231[ $arch == mips ]
232
233# BUG(3251225): Tests that timeout with --nocrankshaft.
234S15.1.3.1_A2.5_T1: SKIP
235S15.1.3.2_A2.5_T1: SKIP
236S15.1.3.1_A2.4_T1: SKIP
237S15.1.3.1_A2.5_T1: SKIP
238S15.1.3.2_A2.4_T1: SKIP
239S15.1.3.2_A2.5_T1: SKIP
240S15.1.3.3_A2.3_T1: SKIP
241S15.1.3.4_A2.3_T1: SKIP
242S15.1.3.1_A2.5_T1: SKIP
243S15.1.3.2_A2.5_T1: SKIP
244