1 # Copyright 2011 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
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.
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.
28 # This file is up to date with respect to Mozilla's CVS repository as of
29 # 2010-06-29. If new tests are added to Mozilla's CVS it may need to be
32 # To get the mozilla tests:
33 # cd /path/to/checkout/test/mozilla
35 # cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -D 2010-06-29 mozilla/js/tests
36 # mv mozilla/js/tests data
39 # --------------------------------------------------------------------
40 # If you add a test case to this file, please try to provide
41 # an explanation of why the test fails; this may ease future
43 # --------------------------------------------------------------------
47 ##################### NEEDS INVESTIGATION ##############
49 # BUG(2893): These tests started to fail after i18n support was turned on.
50 # Need to investigate why.
51 'ecma_3/Number/15.7.4.3-02': [PASS, FAIL],
52 'ecma_3/Date/15.9.5.5-02': [PASS, FAIL],
54 ##################### SKIPPED TESTS #####################
56 # This test checks that we behave properly in an out-of-memory
57 # situation. The test fails in V8 with an exception and takes a long
59 'js1_5/Regress/regress-271716-n': [SKIP],
61 # BUG(960): This test has an insane amount of output when it times out,
62 # messing up ability to see other failures on the waterfall.
63 'js1_5/extensions/regress-342960': [SKIP],
65 # This test uses a unitialized variable. A Bug has been filed:
66 # https://bugzilla.mozilla.org/show_bug.cgi?id=575575
67 'js1_5/Array/regress-465980-02': [SKIP],
69 # These tests are simply wrong (i.e., they do not test what they intend
71 # In particular, these two compare numbers to NaN with != in the current
72 # version of the Mozilla tests. This is *fixed* in a later version.
73 # The tests should be re-enabled when switching to a new version.
74 'ecma_3/Date/15.9.3.2-1': [SKIP],
75 'js1_2/function/Number': [SKIP],
77 # TODO(2018): Temporarily allow timeout in debug mode.
78 'js1_5/GC/regress-203278-2': [PASS, ['mode == debug', TIMEOUT, NO_VARIANTS, FAIL]],
80 ##################### SLOW TESTS #####################
82 # This takes a long time to run (~100 seconds). It should only be run
83 # by the really patient.
84 'js1_5/GC/regress-324278': [SKIP],
86 # This takes a long time to run because our indexOf operation is
87 # pretty slow - it causes a lot of GCs; see issue
88 # #926379. We could consider marking this SKIP because it takes a
89 # while to run to completion.
90 'js1_5/GC/regress-338653': [SKIP],
92 # This test is designed to run until it runs out of memory. This takes
93 # a very long time because it builds strings character by character
94 # and compiles a lot of regular expressions. We could consider marking
95 # this SKIP because it takes a while to run to completion.
96 'js1_5/GC/regress-346794': [SKIP],
98 # Runs out of memory while trying to build huge string of 'x'
99 # characters. This takes a long time to run (~32 seconds).
100 'js1_5/GC/regress-348532': [SKIP],
103 ##################### FLAKY TESTS #####################
105 # These tests time out in debug mode but pass in product mode
106 'js1_5/Regress/regress-360969-03': [PASS, ['mode == debug', TIMEOUT, NO_VARIANTS]],
107 'js1_5/Regress/regress-360969-04': [PASS, ['mode == debug', TIMEOUT, NO_VARIANTS]],
108 'js1_5/Regress/regress-360969-05': [PASS, ['mode == debug', TIMEOUT, NO_VARIANTS]],
109 'js1_5/Regress/regress-360969-06': [PASS, ['mode == debug', TIMEOUT, NO_VARIANTS]],
110 'js1_5/extensions/regress-365527': [PASS, ['mode == debug', TIMEOUT, NO_VARIANTS]],
112 'js1_5/Regress/regress-280769-3': [PASS, ['mode == debug', FAIL]],
113 'js1_5/Regress/regress-203278-1': [PASS, ['mode == debug', FAIL]],
114 'js1_5/Regress/regress-244470': [PASS, ['mode == debug', FAIL]],
115 'ecma_3/RegExp/regress-209067': [PASS, ['mode == debug', FAIL]],
116 'js1_5/GC/regress-278725': [PASS, ['mode == debug', FAIL]],
117 # http://b/issue?id=1206983
118 'js1_5/Regress/regress-367561-03': [PASS, ['mode == debug', FAIL]],
119 'ecma/Date/15.9.5.10-2': [PASS, FAIL, ['mode == debug', TIMEOUT, NO_VARIANTS]],
121 # These tests create two Date objects just after each other and
122 # expects them to match. Sometimes this happens on the border
123 # between one second and the next.
124 'ecma/Date/15.9.2.1': [PASS, FAIL],
125 'ecma/Date/15.9.2.2-1': [PASS, FAIL],
126 'ecma/Date/15.9.2.2-2': [PASS, FAIL],
127 'ecma/Date/15.9.2.2-3': [PASS, FAIL],
128 'ecma/Date/15.9.2.2-4': [PASS, FAIL],
129 'ecma/Date/15.9.2.2-5': [PASS, FAIL],
130 'ecma/Date/15.9.2.2-6': [PASS, FAIL],
132 # 1026139: These date tests fail on arm and mips
133 'ecma/Date/15.9.5.29-1': [PASS, ['arch == arm or arch == mipsel', FAIL]],
134 'ecma/Date/15.9.5.28-1': [PASS, ['arch == arm or arch == mipsel', FAIL]],
136 # 1050186: Arm/MIPS vm is broken; probably unrelated to dates
137 'ecma/Array/15.4.4.5-3': [PASS, ['arch == arm or arch == mipsel', FAIL]],
138 'ecma/Date/15.9.5.22-2': [PASS, ['arch == arm or arch == mipsel', FAIL]],
140 # Flaky test that fails due to what appears to be a bug in the test.
141 # Occurs depending on current time
142 'ecma/Date/15.9.5.8': [PASS, FAIL],
144 # Severely brain-damaged test. Access to local variables must not
145 # be more than 2.5 times faster than access to global variables? WTF?
146 'js1_5/Regress/regress-169559': [PASS, FAIL],
149 # Test that rely on specific timezone (not working in Denmark).
150 'js1_5/Regress/regress-58116': [PASS, FAIL],
153 # Flaky random() test. Tests the distribution of calls to Math.random().
154 'js1_5/Regress/regress-211590': [PASS, FAIL],
157 # Flaky tests; expect BigO-order computations to yield 1, but the code
158 # cannot handle outliers. See bug #925864.
159 'ecma_3/RegExp/regress-311414': [PASS, FAIL],
160 'ecma_3/RegExp/regress-289669': [PASS, FAIL],
161 'js1_5/String/regress-314890': [PASS, FAIL],
162 'js1_5/String/regress-56940-01': [PASS, FAIL],
163 'js1_5/String/regress-56940-02': [PASS, FAIL],
164 'js1_5/String/regress-157334-01': [PASS, FAIL],
165 'js1_5/String/regress-322772': [PASS, FAIL],
166 'js1_5/Array/regress-99120-01': [PASS, FAIL],
167 'js1_5/Array/regress-99120-02': [PASS, FAIL],
168 'js1_5/Regress/regress-347306-01': [PASS, FAIL],
169 'js1_5/Regress/regress-416628': [PASS, FAIL, ['mode == debug', TIMEOUT, NO_VARIANTS]],
172 # The following two tests assume that daylight savings time starts first
173 # Sunday in April. This is not true when executing the tests outside
174 # California! In Denmark the adjustment starts one week earlier.
175 # Tests based on shell that use dates in this gap are flaky.
176 'ecma/Date/15.9.5.10-1': [PASS, FAIL],
177 'ecma/Date/15.9.5.12-1': [PASS, FAIL],
178 'ecma/Date/15.9.5.14': [PASS, FAIL],
179 'ecma/Date/15.9.5.34-1': [PASS, FAIL],
182 # These tests sometimes pass (in particular on Windows). They build up
183 # a lot of stuff on the stack, which normally causes a stack overflow,
184 # but sometimes it makes it through?
185 'js1_5/Regress/regress-98901': [PASS, FAIL],
188 # Tests that sorting arrays of ints is less than 3 times as fast
189 # as sorting arrays of strings.
190 'js1_5/extensions/regress-371636': [PASS, FAIL, ['mode == debug', TIMEOUT, NO_VARIANTS]],
193 # Tests depend on GC timings. Inherently flaky.
194 'js1_5/GC/regress-383269-01': [PASS, FAIL],
195 'js1_5/GC/regress-383269-02': [PASS, FAIL],
196 'js1_5/Regress/regress-404755': [PASS, FAIL],
199 # Test that depends on timer resolution. Fails every now and then
200 # if we're unlucky enough to get a context switch at a bad time.
201 'js1_5/extensions/regress-363258': [PASS, FAIL],
204 # Test that assumes specific runtime for a regexp, flaky in debug mode.
205 'ecma_3/RegExp/regress-85721': [PASS, ['mode == debug', FAIL]],
208 # Test that assumes specific execution time, flaky in debug mode.
209 'js1_5/Array/regress-101964': [PASS, ['mode == debug', FAIL]],
212 ##################### INCOMPATIBLE TESTS #####################
214 # This section is for tests that fail in both V8 and JSC. Thus they
215 # have been determined to be incompatible between Mozilla and V8/JSC.
217 # toPrecision argument restricted to range 1..21 in JSC/V8 and ECMA-262
218 'js1_5/Regress/regress-452346': [FAIL_OK],
220 # Fail because it calls builtins as functions and do not expect the
221 # builtin to have undefined as the receiver.
222 'ecma/String/15.5.4.6-2': [FAIL_OK],
224 # Fail because it expects String.prototype.split to distinguish whether
225 # separator was undefined or not passed at all.
226 'ecma/String/15.5.4.8-2': [FAIL_OK],
228 # Fail because of toLowerCase and toUpperCase conversion.
229 'ecma/String/15.5.4.11-2': [FAIL_OK],
230 'ecma/String/15.5.4.11-5': [FAIL_OK],
231 'ecma/String/15.5.4.12-1': [FAIL_OK],
232 'ecma/String/15.5.4.12-4': [FAIL_OK],
234 # This test uses an older version of the unicode standard that fails
235 # us because we correctly convert the armenian small ligature ech-yiwn
236 # to the two upper-case characters ECH and YIWN, whereas the older
237 # unicode version converts it to itself.
238 'ecma/String/15.5.4.12-5': [FAIL_OK],
240 # Creates a linked list of arrays until we run out of memory or timeout.
241 'js1_5/Regress/regress-312588': [SKIP],
244 # Runs out of memory because it compiles huge functions.
245 'js1_5/Function/regress-338001': [FAIL_OK],
246 'js1_5/Function/regress-338121-01': [FAIL_OK],
247 'js1_5/Function/regress-338121-02': [FAIL_OK],
248 'js1_5/Function/regress-338121-03': [FAIL_OK],
250 # Expectes 'prototype' property of functions to be enumerable.
251 'js1_5/Function/10.1.6-01': [FAIL_OK],
254 # We don't match the syntax error message of Mozilla for invalid
256 'ecma_3/RegExp/15.10.4.1-6': [FAIL_OK],
258 # PCRE doesn't allow subpattern nesting deeper than 200, this tests
259 # depth 500. JSC detects the case, and return null from the match,
260 # and passes this test (the test doesn't check for a correct return
262 'ecma_3/RegExp/regress-119909': [PASS, FAIL_OK],
265 # Difference in the way capturing subpatterns work. In JS, when the
266 # 'minimum repeat count' is reached, the empty string must not match.
267 # In this case, we are similar but not identical to JSC. Hard to
268 # support the JS behavior with PCRE, so maybe emulate JSC?
269 'ecma_3/RegExp/regress-209919': [PASS, FAIL_OK],
270 'js1_5/extensions/regress-459606': [PASS, FAIL_OK],
273 # PCRE's match limit is reached. SpiderMonkey hangs on the first one,
274 # JSC returns true somehow. Maybe they up the match limit? There is
275 # an open V8 bug 676063 about this.
276 # TODO(yangguo): Hangs on complex regexp. Please investigate if this gives
277 # any useful coverage.
278 'ecma_3/RegExp/regress-330684': [SKIP],
281 # This test contains a regexp that runs exponentially long. Spidermonkey
282 # standalone will hang, though apparently inside Firefox it will trigger a
283 # long-running-script timeout. JSCRE passes by hitting the matchLimit and
284 # just pretending that an exhaustive search found no match.
285 # TODO(yangguo): Hangs on complex regexp. Please investigate if this gives
286 # any useful coverage.
287 'ecma_3/RegExp/regress-307456': [SKIP],
290 # We do not detect overflow in bounds for back references and {}
291 # quantifiers. Might fix by parsing numbers differently?
292 'js1_5/Regress/regress-230216-2': [FAIL_OK],
295 # Regexp too long for PCRE.
296 'js1_5/Regress/regress-280769': [PASS, FAIL],
297 'js1_5/Regress/regress-280769-1': [PASS, FAIL],
298 'js1_5/Regress/regress-280769-2': [PASS, FAIL],
299 'js1_5/Regress/regress-280769-4': [PASS, FAIL],
300 'js1_5/Regress/regress-280769-5': [PASS, FAIL],
303 # We do not support static RegExp.multiline - should we?.
304 'js1_2/regexp/RegExp_multiline': [FAIL_OK],
305 'js1_2/regexp/RegExp_multiline_as_array': [FAIL_OK],
306 'js1_2/regexp/beginLine': [FAIL_OK],
307 'js1_2/regexp/endLine': [FAIL_OK],
309 # We no longer let calls to test and exec with no argument implicitly
310 # use the previous input.
311 'js1_2/regexp/RegExp_input': [FAIL_OK],
312 'js1_2/regexp/RegExp_input_as_array': [FAIL_OK],
315 # To be compatible with safari typeof a regexp yields 'function';
316 # in firefox it yields 'object'.
317 'js1_2/function/regexparg-1': [FAIL_OK],
321 'js1_5/Date/regress-301738-02': [FAIL_OK],
324 # This test fails for all browsers on in the CET timezone.
325 'ecma/Date/15.9.5.35-1': [PASS, FAIL_OK],
328 # Spidermonkey allows stuff in parenthesis directly after the minutes
329 # in a date. JSC does not, so we don't either.
330 'js1_5/Date/regress-309925-02': [FAIL_OK],
333 # Print string after deleting array element?
334 'js1_5/Expressions/regress-96526-delelem': [FAIL_OK],
337 # Stack overflows should be InternalError: too much recursion?
338 'js1_5/Regress/regress-234389': [FAIL_OK],
341 # This may very well be a bogus test. I'm not sure yet.
342 'js1_5/Regress/regress-320119': [FAIL_OK],
345 # No support for toSource().
346 'js1_5/Regress/regress-248444': [FAIL_OK],
347 'js1_5/Regress/regress-313967-01': [FAIL_OK],
348 'js1_5/Regress/regress-313967-02': [FAIL_OK],
350 # This fails because we don't have stack space for Function.prototype.apply
351 # with very large numbers of arguments. The test uses 2^24 arguments.
352 'js1_5/Array/regress-350256-03': [FAIL_OK],
355 # Extra arguments not handled properly in String.prototype.match
356 'js1_5/Regress/regress-179524': [FAIL_OK],
359 # Uncategorized failures. Please help categorize (or fix) these failures.
360 'js1_5/Regress/regress-172699': [FAIL_OK],
363 # Assumes that the prototype of a function is enumerable. Non-ECMA,
364 # see section 15.3.3.1, page 86.
365 'ecma/GlobalObject/15.1.2.2-1': [FAIL_OK],
366 'ecma/GlobalObject/15.1.2.3-1': [FAIL_OK],
367 'ecma/GlobalObject/15.1.2.4': [FAIL_OK],
368 'ecma/GlobalObject/15.1.2.5-1': [FAIL_OK],
369 'ecma/GlobalObject/15.1.2.6': [FAIL_OK],
370 'ecma/GlobalObject/15.1.2.7': [FAIL_OK],
373 # Leading zero no longer signal octal numbers (ECMA-262 Annex E 15.1.2.2).
374 'ecma/GlobalObject/15.1.2.2-2': [FAIL_OK],
377 # Tests that rely on specific details of function decompilation or
378 # print strings for errors. Non-ECMA behavior.
379 'js1_2/function/tostring-2': [FAIL_OK],
380 'js1_2/Objects/toString-001': [FAIL_OK],
381 'js1_5/LexicalConventions/regress-469940': [FAIL_OK],
382 'js1_5/Exceptions/regress-332472': [FAIL_OK],
383 'js1_5/Regress/regress-173067': [FAIL_OK],
384 'js1_5/Regress/regress-355556': [FAIL_OK],
385 'js1_5/Regress/regress-328664': [FAIL_OK],
386 'js1_5/Regress/regress-252892': [FAIL_OK],
387 'js1_5/Regress/regress-352208': [FAIL_OK],
388 'ecma_3/Array/15.4.5.1-01': [FAIL_OK],
389 'ecma_3/Array/regress-387501': [FAIL_OK],
390 'ecma_3/LexicalConventions/7.9.1': [FAIL_OK],
391 'ecma_3/RegExp/regress-375711': [FAIL_OK],
392 'ecma_3/Unicode/regress-352044-01': [FAIL_OK],
393 'ecma_3/extensions/regress-274152': [FAIL_OK],
394 'js1_5/Regress/regress-372364': [FAIL_OK],
395 'js1_5/Regress/regress-420919': [FAIL_OK],
396 'js1_5/Regress/regress-422348': [FAIL_OK],
397 'js1_5/Regress/regress-410852': [FAIL_OK],
398 'ecma_3/RegExp/regress-375715-04': [FAIL_OK],
399 'js1_5/decompilation/regress-456964-01': [FAIL_OK],
400 'js1_5/decompilation/regress-437288-02': [FAIL_OK],
401 'js1_5/decompilation/regress-457824': [FAIL_OK],
402 'js1_5/decompilation/regress-460116-01': [FAIL_OK],
403 'js1_5/decompilation/regress-460116-02': [FAIL_OK],
404 'js1_5/decompilation/regress-460501': [FAIL_OK],
405 'js1_5/decompilation/regress-460116-03': [FAIL_OK],
406 'js1_5/decompilation/regress-461110': [FAIL_OK],
409 # Tests that use uneval. Non-ECMA.
410 'js1_5/GC/regress-418128': [FAIL_OK],
411 'js1_5/extensions/regress-465276': [FAIL_OK],
412 'js1_5/Error/regress-465377': [FAIL_OK],
414 # Tests that use the watch method. Non-ECMA.
415 'js1_5/extensions/regress-435345-01': [FAIL_OK],
416 'js1_5/extensions/regress-455413': [FAIL_OK],
419 # Uses Mozilla-specific QName, XML, XMLList and Iterator.
420 'js1_5/Regress/regress-407323': [FAIL_OK],
421 'js1_5/Regress/regress-407957': [FAIL_OK],
424 # Relies on JavaScript 1.2 / 1.3 deprecated features.
425 'js1_2/function/String': [FAIL_OK],
426 'js1_2/operator/equality': [FAIL_OK],
427 'js1_2/version120/boolean-001': [FAIL_OK],
428 'js1_2/String/concat': [FAIL_OK],
429 'js1_2/function/Function_object': [FAIL_OK],
430 'js1_2/function/tostring-1': [FAIL_OK],
431 'js1_2/version120/regress-99663': [FAIL_OK],
432 'js1_2/regexp/RegExp_lastIndex': [FAIL_OK],
433 'js1_2/regexp/string_split': [FAIL_OK],
436 # RegExps are not callable.
437 'js1_2/regexp/simple_form': [FAIL_OK],
438 'js1_2/regexp/regress-6359': [FAIL_OK],
439 'js1_2/regexp/regress-9141': [FAIL_OK],
440 'js1_5/Regress/regress-224956': [FAIL_OK],
441 'js1_5/Regress/regress-325925': [FAIL_OK],
442 'ecma_2/RegExp/regress-001': [FAIL_OK],
444 # We do not check for bad surrogate pairs when quoting strings.
445 'js1_5/Regress/regress-315974': [FAIL_OK],
448 # Use unsupported "watch".
449 'js1_5/Regress/regress-213482': [FAIL_OK],
450 'js1_5/Regress/regress-240577': [FAIL_OK],
451 'js1_5/Regress/regress-355344': [FAIL_OK],
452 'js1_5/Object/regress-362872-01': [FAIL_OK],
453 'js1_5/Object/regress-362872-02': [FAIL_OK],
454 'js1_5/Regress/regress-361467': [FAIL_OK],
455 'js1_5/Regress/regress-385393-06': [FAIL_OK],
456 'js1_5/Regress/regress-506567': [FAIL_OK],
459 # Use special Mozilla getter/setter syntax
460 'js1_5/Regress/regress-354924': [FAIL_OK],
461 'js1_5/Regress/regress-355341': [FAIL_OK],
462 'js1_5/GC/regress-316885-01': [FAIL_OK],
463 'js1_5/GetSet/getset-002': [FAIL_OK],
464 'js1_5/GetSet/regress-353264': [FAIL_OK],
465 'js1_5/Regress/regress-361617': [FAIL_OK],
466 'js1_5/Regress/regress-362583': [FAIL_OK],
467 'js1_5/extensions/regress-356378': [FAIL_OK],
468 'js1_5/extensions/regress-452178': [FAIL_OK],
471 # Requires Mozilla-specific strict mode or options() function.
472 'ecma_3/Object/8.6.1-01': [FAIL_OK],
473 'js1_5/Exceptions/regress-315147': [FAIL_OK],
474 'js1_5/Regress/regress-106244': [FAIL_OK],
475 'js1_5/Regress/regress-317533': [FAIL_OK],
476 'js1_5/Regress/regress-323314-1': [FAIL_OK],
477 'js1_5/Regress/regress-352197': [FAIL_OK],
480 # Equivalent to assert(false).
481 'ecma_2/RegExp/exec-001': [FAIL_OK],
482 'ecma_2/String/replace-001': [FAIL_OK],
485 # We do not strip unicode format control characters. This is really
486 # required for working with non-latin character sets. We match JSC
487 # and IE here. Firefox matches the spec (section 7.1).
488 'ecma_3/Unicode/uc-001': [FAIL_OK],
491 # A non-breaking space doesn't match \s in a regular expression. This
492 # behaviour matches JSC. All the VMs have different behaviours in which
493 # characters match \s so we do the same as JSC until they change.
494 'ecma_3/Unicode/uc-002': [PASS, FAIL_OK],
497 # String.prototype.split on empty strings always returns an array
498 # with one element (as specified in ECMA-262).
499 'js1_2/Array/array_split_1': [FAIL_OK],
502 # The concat() method is defined in Array.prototype; not Array.
503 'js1_5/Array/regress-313153': [FAIL_OK],
505 # The join() method is defined on Array.prototype; not Array.
506 'js1_5/Array/regress-474529': [FAIL_OK],
508 # The lastIndexOf() method is defined on Array.prototype, not Array.
509 'ecma_3/Array/15.5.4.8-01': [FAIL_OK],
511 # Properties fileName, and lineNumber of Error instances are
512 # not supported. Mozilla specific extension.
513 'js1_5/Exceptions/errstack-001': [FAIL_OK],
514 'js1_5/Exceptions/regress-257751': [FAIL_OK],
515 'js1_5/Regress/regress-119719': [FAIL_OK],
516 'js1_5/Regress/regress-167328': [FAIL_OK],
517 'js1_5/Regress/regress-243869': [FAIL_OK],
520 # Unsupported import/export and <xml> literals. Mozilla extensions.
521 'js1_5/Regress/regress-249211': [FAIL_OK],
522 'js1_5/Regress/regress-309242': [FAIL_OK],
523 'js1_5/Regress/regress-350692': [FAIL_OK],
524 'js1_5/extensions/regress-421621': [FAIL_OK],
525 'js1_5/extensions/regress-432075': [FAIL_OK],
528 # The length of Error functions is 1 not 3.
529 'js1_5/Exceptions/regress-123002': [FAIL_OK],
532 # Reserved keywords as function names, etc is not supported.
533 'js1_5/LexicalConventions/regress-343675': [FAIL_OK],
536 # Tests if future reserved keywords of ECMA-262, edition 3 emit warnings. We
537 # implement the edition 5 behaviour and fail on use of edition 5 future
538 # reserved keywords as identifiers.
539 'js1_5/Regress/regress-240317': [FAIL_OK],
542 # Unsupported list comprehensions: [ ... for ... ] and for each.
543 'js1_5/Regress/regress-352009': [FAIL_OK],
544 'js1_5/Regress/regress-349648': [FAIL_OK],
547 # Expects top level arguments (passed on command line?) to be
549 'js1_5/Regress/regress-336100': [FAIL_OK],
552 # Regular expression test failures due to PCRE. We match JSC (ie, perl)
553 # behavior and not the ECMA spec.
554 'ecma_3/RegExp/perlstress-001': [PASS, FAIL_OK],
555 'ecma_3/RegExp/regress-334158': [PASS, FAIL],
557 # This test fails due to http://code.google.com/p/v8/issues/detail?id=187
558 # Failure to clear captures when a lookahead is unwound.
559 'ecma_3/RegExp/15.10.2-1': [PASS, FAIL_OK],
561 # This test requires a failure if we try to compile a function with more
562 # than 65536 arguments. This seems to be a Mozilla restriction.
563 'js1_5/Regress/regress-290575': [PASS, FAIL_OK],
566 # Fails because of the way function declarations are
567 # handled in V8/JSC. V8 follows IE behavior and introduce
568 # all nested function declarations when entering the
569 # surrounding function, whereas Spidermonkey declares
570 # them dynamically when the statement is executed.
571 'ecma_3/Function/scope-001': [FAIL_OK],
572 'ecma_3/FunExpr/fe-001': [FAIL_OK],
573 'js1_5/Scope/regress-184107': [FAIL_OK],
576 # Function is deletable in V8 and JSC.
577 'js1_5/Regress/regress-352604': [FAIL_OK],
580 # Cannot call strings as functions. Expects not to crash.
581 'js1_5/Regress/regress-417893': [FAIL_OK],
584 # Unsupported use of "[]" as function parameter. We match JSC.
585 'js1_5/Regress/regress-416737-01': [FAIL_OK],
586 'js1_5/Regress/regress-416737-02': [FAIL_OK],
589 # Illegal escape-sequences in string literals. Has already been fixed
590 # by most engines (i.e. V8, JSC, Opera and FF).
591 'ecma/Array/15.4.5.1-1': [FAIL_OK],
592 'ecma/LexicalConventions/7.7.4': [FAIL_OK],
593 'ecma_2/RegExp/hex-001': [FAIL_OK],
594 'js1_2/regexp/hexadecimal': [FAIL_OK],
597 # The source field of RegExp objects is properly escaped. We match JSC.
598 'ecma_2/RegExp/constructor-001': [FAIL_OK],
599 'ecma_2/RegExp/function-001': [FAIL_OK],
600 'ecma_2/RegExp/properties-001': [FAIL_OK],
603 # Negative hexadecimal literals are parsed as NaN. This test is outdated.
604 'ecma/TypeConversion/9.3.1-3': [FAIL_OK],
606 ##################### FAILING TESTS #####################
608 # This section is for tests that fail in V8 and pass in JSC.
609 # Tests that fail in both V8 and JSC belong in the FAIL_OK
612 # This fails because we don't handle Function.prototype.apply with very large
613 # numbers of arguments (depending on max stack size). 350256-02 needs more
614 # than 4Mbytes of stack space.
615 'js1_5/Array/regress-350256-02': [FAIL],
618 # This test seems designed to fail (it produces a 700Mbyte string).
619 # We fail on out of memory. The important thing is not to crash.
620 'js1_5/Regress/regress-303213': [FAIL, ['mode == debug', TIMEOUT, NO_VARIANTS]],
622 # This test fails since we now throw in String.prototype.match when apply
623 # is given null or undefined as this argument (and so does firefox nightly).
624 'js1_5/Regress/regress-295052': [FAIL],
626 # Bug 1202592: New ecma_3/String/15.5.4.11 is failing.
627 'ecma_3/String/15.5.4.11': [FAIL],
629 # Bug 1202597: New js1_5/Expressions/regress-394673 is failing.
630 # Marked as: Will not fix. V8 throws an acceptable RangeError.
631 'js1_5/Expressions/regress-394673': [FAIL],
634 # Bug 762: http://code.google.com/p/v8/issues/detail?id=762
635 # We do not correctly handle assignments within "with"
636 'ecma_3/Statements/12.10-01': [FAIL],
638 # We do not throw an exception when a const is redeclared.
639 # (We only fail section 1 of the test.)
640 'js1_5/Regress/regress-103602': [FAIL],
642 ##################### MOZILLA EXTENSION TESTS #####################
644 'ecma/extensions/15.1.2.1-1': [FAIL_OK],
645 'ecma_3/extensions/regress-385393-03': [FAIL_OK],
646 'ecma_3/extensions/7.9.1': [FAIL_OK],
647 'js1_5/extensions/catchguard-001': [FAIL_OK],
648 'js1_5/extensions/catchguard-002': [FAIL_OK],
649 'js1_5/extensions/catchguard-003': [FAIL_OK],
650 'js1_5/extensions/getset-001': [FAIL_OK],
651 'js1_5/extensions/getset-003': [FAIL_OK],
652 'js1_5/extensions/no-such-method': [FAIL_OK],
653 'js1_5/extensions/regress-104077': [FAIL_OK],
654 'js1_5/extensions/regress-226078': [FAIL_OK],
655 'js1_5/extensions/regress-303277': [FAIL_OK],
656 'js1_5/extensions/regress-304897': [FAIL_OK],
657 'js1_5/extensions/regress-306738': [FAIL_OK],
658 'js1_5/extensions/regress-311161': [FAIL_OK],
659 'js1_5/extensions/regress-311583': [FAIL_OK],
660 'js1_5/extensions/regress-311792-01': [FAIL_OK],
661 'js1_5/extensions/regress-312278': [FAIL_OK],
662 'js1_5/extensions/regress-313630': [FAIL_OK],
663 'js1_5/extensions/regress-313763': [FAIL_OK],
664 'js1_5/extensions/regress-313803': [FAIL_OK],
665 'js1_5/extensions/regress-314874': [FAIL_OK],
666 'js1_5/extensions/regress-322957': [FAIL_OK],
667 'js1_5/extensions/regress-328556': [FAIL_OK],
668 'js1_5/extensions/regress-333541': [FAIL_OK],
669 'js1_5/extensions/regress-335700': [FAIL_OK],
670 'js1_5/extensions/regress-336409-1': [FAIL_OK],
671 'js1_5/extensions/regress-336409-2': [FAIL_OK],
672 'js1_5/extensions/regress-336410-2': [FAIL_OK],
673 'js1_5/extensions/regress-341956-01': [FAIL_OK],
674 'js1_5/extensions/regress-345967': [FAIL_OK],
675 'js1_5/extensions/regress-346494-01': [FAIL_OK],
676 'js1_5/extensions/regress-346494': [FAIL_OK],
677 'js1_5/extensions/regress-347306-02': [FAIL_OK],
678 'js1_5/extensions/regress-348986': [FAIL_OK],
679 'js1_5/extensions/regress-349616': [FAIL_OK],
680 'js1_5/extensions/regress-350312-02': [FAIL_OK],
681 'js1_5/extensions/regress-350312-03': [FAIL_OK],
682 'js1_5/extensions/regress-350531': [FAIL_OK],
683 'js1_5/extensions/regress-351102-01': [FAIL_OK],
684 'js1_5/extensions/regress-351102-02': [FAIL_OK],
685 'js1_5/extensions/regress-351102-06': [FAIL_OK],
686 'js1_5/extensions/regress-351973': [FAIL_OK],
687 'js1_5/extensions/regress-352060': [FAIL_OK],
688 'js1_5/extensions/regress-352094': [FAIL_OK],
689 'js1_5/extensions/regress-352261': [FAIL_OK],
690 'js1_5/extensions/regress-352281': [FAIL_OK],
691 'js1_5/extensions/regress-352455': [FAIL_OK],
692 'js1_5/extensions/regress-352604': [FAIL_OK],
693 'js1_5/extensions/regress-353214': [FAIL_OK],
694 'js1_5/extensions/regress-355339': [FAIL_OK],
695 'js1_5/extensions/regress-355497': [FAIL_OK],
696 'js1_5/extensions/regress-355622': [FAIL_OK],
697 'js1_5/extensions/regress-355736': [FAIL_OK],
698 'js1_5/extensions/regress-356085': [FAIL_OK],
699 'js1_5/extensions/regress-356106': [FAIL_OK],
700 'js1_5/extensions/regress-358594-01': [FAIL_OK],
701 'js1_5/extensions/regress-358594-02': [FAIL_OK],
702 'js1_5/extensions/regress-358594-03': [FAIL_OK],
703 'js1_5/extensions/regress-358594-04': [FAIL_OK],
704 'js1_5/extensions/regress-358594-05': [FAIL_OK],
705 'js1_5/extensions/regress-358594-06': [FAIL_OK],
706 'js1_5/extensions/regress-361346': [FAIL_OK],
707 'js1_5/extensions/regress-361360': [FAIL_OK],
708 'js1_5/extensions/regress-361558': [FAIL_OK],
709 'js1_5/extensions/regress-361571': [FAIL_OK],
710 'js1_5/extensions/regress-361856': [FAIL_OK],
711 'js1_5/extensions/regress-361964': [FAIL_OK],
712 'js1_5/extensions/regress-363988': [FAIL_OK],
713 'js1_5/extensions/regress-365869': [FAIL_OK],
714 'js1_5/extensions/regress-367630': [FAIL_OK],
715 'js1_5/extensions/regress-367923': [FAIL_OK],
716 'js1_5/extensions/regress-368859': [FAIL_OK],
717 'js1_5/extensions/regress-369696-01': [FAIL_OK],
718 'js1_5/extensions/regress-369696-02': [FAIL_OK],
719 'js1_5/extensions/regress-369696-03': [FAIL_OK],
720 'js1_5/extensions/regress-374589': [FAIL_OK],
721 'js1_5/extensions/regress-375801': [FAIL_OK],
722 'js1_5/extensions/regress-376052': [FAIL_OK],
723 'js1_5/extensions/regress-379523': [FAIL_OK],
724 'js1_5/extensions/regress-380581': [FAIL_OK],
725 'js1_5/extensions/regress-380831': [FAIL_OK],
726 'js1_5/extensions/regress-381205': [FAIL_OK],
727 'js1_5/extensions/regress-381211': [FAIL_OK],
728 'js1_5/extensions/regress-381304': [FAIL_OK],
729 'js1_5/extensions/regress-382509': [FAIL_OK],
730 'js1_5/extensions/regress-383965': [FAIL_OK],
731 'js1_5/extensions/regress-384680': [FAIL_OK],
732 'js1_5/extensions/regress-385393-09': [FAIL_OK],
733 'js1_5/extensions/regress-407501': [FAIL_OK],
734 'js1_5/extensions/regress-418730': [FAIL_OK],
735 'js1_5/extensions/regress-420612': [FAIL_OK],
736 'js1_5/extensions/regress-420869-01': [FAIL_OK],
737 'js1_5/extensions/regress-424257': [FAIL_OK],
738 'js1_5/extensions/regress-424683-01': [FAIL_OK],
739 'js1_5/extensions/regress-429739': [FAIL_OK],
740 'js1_5/extensions/regress-454142': [FAIL_OK],
741 'js1_5/extensions/regress-465145': [FAIL_OK],
742 'js1_5/extensions/regress-469625': [FAIL_OK],
743 'js1_5/extensions/regress-472787': [FAIL_OK],
744 'js1_5/extensions/regress-44009': [FAIL_OK],
745 'js1_5/extensions/regress-50447-1': [FAIL_OK],
746 'js1_5/extensions/regress-50447': [FAIL_OK],
747 'js1_5/extensions/regress-90596-001': [FAIL_OK],
748 'js1_5/extensions/regress-90596-002': [FAIL_OK],
749 'js1_5/extensions/regress-96284-001': [FAIL_OK],
750 'js1_5/extensions/regress-96284-002': [FAIL_OK],
751 'js1_5/extensions/toLocaleFormat-01': [FAIL_OK],
752 'js1_5/extensions/toLocaleFormat-02': [FAIL_OK],
754 # TODO(yangguo): Both tests have complex regular expressions (nested (.*)*
755 # and the like). Please investigate if these tests provide any coverage.
756 # Furthermore, an exception is expected which is not thrown by v8.
757 'js1_5/extensions/regress-330569': [SKIP],
758 'js1_5/extensions/regress-351448': [SKIP],
759 # In the 64-bit version, this test takes longer to run out of memory
760 # than it does in the 32-bit version when attempting to generate a huge
761 # error message in debug mode.
762 'js1_5/extensions/regress-336410-1': [FAIL_OK, ['mode == debug and arch == x64', TIMEOUT, NO_VARIANTS]],
764 ##################### DECOMPILATION TESTS #####################
766 # We don't really about the outcome of running the
767 # decompilation tests as long as they don't crash or
770 'js1_5/decompilation/regress-344120': [PASS, FAIL],
771 'js1_5/decompilation/regress-346892': [PASS, FAIL],
772 'js1_5/decompilation/regress-346902': [PASS, FAIL],
773 'js1_5/decompilation/regress-346904': [PASS, FAIL],
774 'js1_5/decompilation/regress-346915': [PASS, FAIL],
775 'js1_5/decompilation/regress-349484': [PASS, FAIL],
776 'js1_5/decompilation/regress-349489': [PASS, FAIL],
777 'js1_5/decompilation/regress-349491': [PASS, FAIL],
778 'js1_5/decompilation/regress-349596': [PASS, FAIL],
779 'js1_5/decompilation/regress-349650': [PASS, FAIL],
780 'js1_5/decompilation/regress-349663': [PASS, FAIL],
781 'js1_5/decompilation/regress-350242': [PASS, FAIL],
782 'js1_5/decompilation/regress-350263': [PASS, FAIL],
783 'js1_5/decompilation/regress-350271': [PASS, FAIL],
784 'js1_5/decompilation/regress-350666': [PASS, FAIL],
785 'js1_5/decompilation/regress-350670': [PASS, FAIL],
786 'js1_5/decompilation/regress-351104': [PASS, FAIL],
787 'js1_5/decompilation/regress-351219': [PASS, FAIL],
788 'js1_5/decompilation/regress-351336': [PASS, FAIL],
789 'js1_5/decompilation/regress-351597': [PASS, FAIL],
790 'js1_5/decompilation/regress-351625': [PASS, FAIL],
791 'js1_5/decompilation/regress-351626': [PASS, FAIL],
792 'js1_5/decompilation/regress-351693': [PASS, FAIL],
793 'js1_5/decompilation/regress-351705': [PASS, FAIL],
794 'js1_5/decompilation/regress-351793': [PASS, FAIL],
795 'js1_5/decompilation/regress-352013': [PASS, FAIL],
796 'js1_5/decompilation/regress-352022': [PASS, FAIL],
797 'js1_5/decompilation/regress-352073': [PASS, FAIL],
798 'js1_5/decompilation/regress-352202': [PASS, FAIL],
799 'js1_5/decompilation/regress-352312': [PASS, FAIL],
800 'js1_5/decompilation/regress-352360': [PASS, FAIL],
801 'js1_5/decompilation/regress-352375': [PASS, FAIL],
802 'js1_5/decompilation/regress-352453': [PASS, FAIL],
803 'js1_5/decompilation/regress-352649': [PASS, FAIL],
804 'js1_5/decompilation/regress-352873-01': [PASS, FAIL],
805 'js1_5/decompilation/regress-352873-02': [PASS, FAIL],
806 'js1_5/decompilation/regress-353000': [PASS, FAIL],
807 'js1_5/decompilation/regress-353120': [PASS, FAIL],
808 'js1_5/decompilation/regress-353146': [PASS, FAIL],
809 'js1_5/decompilation/regress-354878': [PASS, FAIL],
810 'js1_5/decompilation/regress-354910': [PASS, FAIL],
811 'js1_5/decompilation/regress-355992': [PASS, FAIL],
812 'js1_5/decompilation/regress-356083': [PASS, FAIL],
813 'js1_5/decompilation/regress-356248': [PASS, FAIL],
814 'js1_5/decompilation/regress-371692': [PASS, FAIL],
815 'js1_5/decompilation/regress-373678': [PASS, FAIL],
816 'js1_5/decompilation/regress-375639': [PASS, FAIL],
817 'js1_5/decompilation/regress-375882': [PASS, FAIL],
818 'js1_5/decompilation/regress-376564': [PASS, FAIL],
819 'js1_5/decompilation/regress-383721': [PASS, FAIL],
820 'js1_5/decompilation/regress-406555': [PASS, FAIL],
821 'js1_5/decompilation/regress-460870': [PASS, FAIL],
827 # BUG(3251229): Times out when running new crankshaft test script.
828 'ecma_3/RegExp/regress-311414': [SKIP],
829 'ecma/Date/15.9.5.8': [SKIP],
830 'ecma/Date/15.9.5.10-2': [SKIP],
831 'ecma/Date/15.9.5.11-2': [SKIP],
832 'ecma/Date/15.9.5.12-2': [SKIP],
833 'js1_5/Array/regress-99120-02': [SKIP],
834 'js1_5/extensions/regress-371636': [SKIP],
835 'js1_5/Regress/regress-203278-1': [SKIP],
836 'js1_5/Regress/regress-404755': [SKIP],
837 'js1_5/Regress/regress-451322': [SKIP],
840 # BUG(1040): Allow this test to timeout.
841 'js1_5/GC/regress-203278-2': [PASS, TIMEOUT, NO_VARIANTS],
847 # BUG(3251229): Times out when running new crankshaft test script.
848 'ecma_3/RegExp/regress-311414': [SKIP],
849 'ecma/Date/15.9.5.8': [SKIP],
850 'ecma/Date/15.9.5.10-2': [SKIP],
851 'ecma/Date/15.9.5.11-2': [SKIP],
852 'ecma/Date/15.9.5.12-2': [SKIP],
853 'js1_5/Array/regress-99120-02': [SKIP],
854 'js1_5/extensions/regress-371636': [SKIP],
855 'js1_5/Regress/regress-203278-1': [SKIP],
856 'js1_5/Regress/regress-404755': [SKIP],
857 'js1_5/Regress/regress-451322': [SKIP],
860 # BUG(1040): Allow this test to timeout.
861 'js1_5/GC/regress-203278-2': [PASS, TIMEOUT, NO_VARIANTS],
862 }], # 'arch == mipsel'