| OLD | NEW |
| 1 # Copyright 2016 the V8 project authors. All rights reserved. | 1 # Copyright 2016 the V8 project authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 """ | 5 """ |
| 6 Suppressions for V8 correctness fuzzer failures. | 6 Suppressions for V8 correctness fuzzer failures. |
| 7 | 7 |
| 8 We support three types of suppressions: | 8 We support three types of suppressions: |
| 9 1. Ignore test case by pattern. | 9 1. Ignore test case by pattern. |
| 10 Map a regular expression to a bug entry. A new failure will be reported | 10 Map a regular expression to a bug entry. A new failure will be reported |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 'crbug.com/662424': '/v8/test/mjsunit/regress/regress-2989.js', | 42 'crbug.com/662424': '/v8/test/mjsunit/regress/regress-2989.js', |
| 43 | 43 |
| 44 # crbug.com/680110 | 44 # crbug.com/680110 |
| 45 'crbug.com/680110': '/v8/test/mjsunit/asm/pointer-masking.js', | 45 'crbug.com/680110': '/v8/test/mjsunit/asm/pointer-masking.js', |
| 46 'crbug.com/680110': '/v8/test/mjsunit/compiler/regress-443744.js', | 46 'crbug.com/680110': '/v8/test/mjsunit/compiler/regress-443744.js', |
| 47 'crbug.com/680110': '/v8/test/mjsunit/regress/wasm/regression-647649.js', | 47 'crbug.com/680110': '/v8/test/mjsunit/regress/wasm/regression-647649.js', |
| 48 } | 48 } |
| 49 | 49 |
| 50 # Ignore by test case pattern. Map from bug->regexp. | 50 # Ignore by test case pattern. Map from bug->regexp. |
| 51 # Regular expressions are assumed to be compiled. We use regexp.match. | 51 # Regular expressions are assumed to be compiled. We use regexp.match. |
| 52 # Make sure the code doesn't match in the preamble portion of the test case |
| 53 # (i.e. in the modified inlined mjsunit.js). You can reference the comment |
| 54 # between the two parts like so: |
| 55 # 'crbug.com/666308': |
| 56 # re.compile(r'.*End stripped down and modified version.*' |
| 57 # r'\.prototype.*instanceof.*.*', re.S) |
| 58 # TODO(machenbach): Insert a JS sentinel between the two parts, because |
| 59 # comments are stripped during minimization. |
| 52 IGNORE_TEST_CASES = { | 60 IGNORE_TEST_CASES = { |
| 53 'crbug.com/662907': | |
| 54 re.compile(r'.*new Array.*\[\d+\] =.*' | |
| 55 r'((Array)|(Object)).prototype.__defineSetter__.*', re.S), | |
| 56 | |
| 57 'crbug.com/663340': | |
| 58 re.compile(r'.*\.shift\(\).*', re.S), | |
| 59 | |
| 60 'crbug.com/666308': | |
| 61 re.compile(r'.*End stripped down and modified version.*' | |
| 62 r'\.prototype.*instanceof.*.*', re.S), | |
| 63 | |
| 64 'crbug.com/679957': | 61 'crbug.com/679957': |
| 65 re.compile(r'.*performance\.now.*', re.S), | 62 re.compile(r'.*performance\.now.*', re.S), |
| 66 } | 63 } |
| 67 | 64 |
| 68 # Ignore by output pattern. Map from config->bug->regexp. Config '' is used | 65 # Ignore by output pattern. Map from config->bug->regexp. Config '' is used |
| 69 # to match all configurations. Otherwise use either a compiler configuration, | 66 # to match all configurations. Otherwise use either a compiler configuration, |
| 70 # e.g. fullcode or validate_asm or an architecture, e.g. x64 or ia32 or a | 67 # e.g. fullcode or validate_asm or an architecture, e.g. x64 or ia32 or a |
| 71 # comma-separated combination, e.g. x64,fullcode, for more specific | 68 # comma-separated combination, e.g. x64,fullcode, for more specific |
| 72 # suppressions. | 69 # suppressions. |
| 73 # Bug is preferred to be a crbug.com/XYZ, but can be any short distinguishable | 70 # Bug is preferred to be a crbug.com/XYZ, but can be any short distinguishable |
| 74 # label. | 71 # label. |
| 75 # Regular expressions are assumed to be compiled. We use regexp.search. | 72 # Regular expressions are assumed to be compiled. We use regexp.search. |
| 76 IGNORE_OUTPUT = { | 73 IGNORE_OUTPUT = { |
| 77 '': { | 74 '': { |
| 78 'crbug.com/664068': | 75 'crbug.com/664068': |
| 79 re.compile(r'RangeError', re.S), | 76 re.compile(r'RangeError', re.S), |
| 80 | |
| 81 'crbug.com/669017': | |
| 82 re.compile(r'SyntaxError', re.S), | |
| 83 }, | 77 }, |
| 84 'validate_asm': { | 78 'validate_asm': { |
| 85 'validate_asm': | 79 'validate_asm': |
| 86 re.compile(r'TypeError'), | 80 re.compile(r'TypeError'), |
| 87 }, | 81 }, |
| 88 } | 82 } |
| 89 | 83 |
| 90 # Lines matching any of the following regular expressions will be ignored | 84 # Lines matching any of the following regular expressions will be ignored |
| 91 # if appearing on both sides. The capturing groups need to match exactly. | 85 # if appearing on both sides. The capturing groups need to match exactly. |
| 92 # Use uncompiled regular expressions - they'll be compiled later. | 86 # Use uncompiled regular expressions - they'll be compiled later. |
| (...skipping 10 matching lines...) Expand all Loading... |
| 103 | 97 |
| 104 # These are rarely needed. It includes some cases above. | 98 # These are rarely needed. It includes some cases above. |
| 105 r'^\w*Error: .* is not .*$', | 99 r'^\w*Error: .* is not .*$', |
| 106 r'^(.*) \w*Error: .* is not .*$', | 100 r'^(.*) \w*Error: .* is not .*$', |
| 107 r'^(.*):\d+: \w*Error: .* is not .*$', | 101 r'^(.*):\d+: \w*Error: .* is not .*$', |
| 108 | 102 |
| 109 # Some test cases just print the message. | 103 # Some test cases just print the message. |
| 110 r'^.* is not a function(.*)$', | 104 r'^.* is not a function(.*)$', |
| 111 r'^(.*) is not a .*$', | 105 r'^(.*) is not a .*$', |
| 112 | 106 |
| 113 # crbug.com/669017 | |
| 114 r'^(.*)SyntaxError: .*$', | |
| 115 | |
| 116 # Ignore lines of stack traces as character positions might not match. | 107 # Ignore lines of stack traces as character positions might not match. |
| 117 r'^ at (?:new )?([^:]*):\d+:\d+(.*)$', | 108 r'^ at (?:new )?([^:]*):\d+:\d+(.*)$', |
| 118 r'^(.*):\d+:(.*)$', | 109 r'^(.*):\d+:(.*)$', |
| 119 | 110 |
| 120 # crbug.com/662840 | 111 # crbug.com/662840 |
| 121 r"^.*(?:Trying to access ')?(\w*)(?:(?:' through proxy)|" | 112 r"^.*(?:Trying to access ')?(\w*)(?:(?:' through proxy)|" |
| 122 r"(?: is not defined))$", | 113 r"(?: is not defined))$", |
| 123 | 114 |
| 124 # crbug.com/680064. This subsumes one of the above expressions. | 115 # crbug.com/680064. This subsumes one of the above expressions. |
| 125 r'^(.*)TypeError: .* function$', | 116 r'^(.*)TypeError: .* function$', |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 bug = check(IGNORE_OUTPUT.get(arch, {})) | 309 bug = check(IGNORE_OUTPUT.get(arch, {})) |
| 319 if bug: | 310 if bug: |
| 320 return bug | 311 return bug |
| 321 bug = check(IGNORE_OUTPUT.get(config, {})) | 312 bug = check(IGNORE_OUTPUT.get(config, {})) |
| 322 if bug: | 313 if bug: |
| 323 return bug | 314 return bug |
| 324 bug = check(IGNORE_OUTPUT.get('%s,%s' % (arch, config), {})) | 315 bug = check(IGNORE_OUTPUT.get('%s,%s' % (arch, config), {})) |
| 325 if bug: | 316 if bug: |
| 326 return bug | 317 return bug |
| 327 return None | 318 return None |
| OLD | NEW |