OLD | NEW |
1 # Copyright (C) 2010 Google Inc. All rights reserved. | 1 # Copyright (C) 2010 Google Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
5 # met: | 5 # met: |
6 # | 6 # |
7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 from webkitpy.layout_tests.models.test_configuration import TestConfigurationCon
verter | 36 from webkitpy.layout_tests.models.test_configuration import TestConfigurationCon
verter |
37 | 37 |
38 _log = logging.getLogger(__name__) | 38 _log = logging.getLogger(__name__) |
39 | 39 |
40 | 40 |
41 # Test expectation and specifier constants. | 41 # Test expectation and specifier constants. |
42 # | 42 # |
43 # FIXME: range() starts with 0 which makes if expectation checks harder | 43 # FIXME: range() starts with 0 which makes if expectation checks harder |
44 # as PASS is 0. | 44 # as PASS is 0. |
45 (PASS, FAIL, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, TIMEOUT, CRASH, SKIP, WONTFIX, | 45 (PASS, FAIL, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, TIMEOUT, CRASH, LEAK, SKIP, WO
NTFIX, |
46 SLOW, REBASELINE, NEEDS_REBASELINE, NEEDS_MANUAL_REBASELINE, MISSING, FLAKY, NO
W, NONE) = range(18) | 46 SLOW, REBASELINE, NEEDS_REBASELINE, NEEDS_MANUAL_REBASELINE, MISSING, FLAKY, NO
W, NONE) = range(19) |
47 | 47 |
48 # FIXME: Perhas these two routines should be part of the Port instead? | 48 # FIXME: Perhas these two routines should be part of the Port instead? |
49 BASELINE_SUFFIX_LIST = ('png', 'wav', 'txt') | 49 BASELINE_SUFFIX_LIST = ('png', 'wav', 'txt') |
50 | 50 |
51 WEBKIT_BUG_PREFIX = 'webkit.org/b/' | 51 WEBKIT_BUG_PREFIX = 'webkit.org/b/' |
52 CHROMIUM_BUG_PREFIX = 'crbug.com/' | 52 CHROMIUM_BUG_PREFIX = 'crbug.com/' |
53 V8_BUG_PREFIX = 'code.google.com/p/v8/issues/detail?id=' | 53 V8_BUG_PREFIX = 'code.google.com/p/v8/issues/detail?id=' |
54 NAMED_BUG_PREFIX = 'Bug(' | 54 NAMED_BUG_PREFIX = 'Bug(' |
55 | 55 |
56 MISSING_KEYWORD = 'Missing' | 56 MISSING_KEYWORD = 'Missing' |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 'Release', | 215 'Release', |
216 'Debug', | 216 'Debug', |
217 ] | 217 ] |
218 | 218 |
219 _configuration_tokens = dict((token, token.upper()) for token in _configurat
ion_tokens_list) | 219 _configuration_tokens = dict((token, token.upper()) for token in _configurat
ion_tokens_list) |
220 _inverted_configuration_tokens = dict((value, name) for name, value in _conf
iguration_tokens.iteritems()) | 220 _inverted_configuration_tokens = dict((value, name) for name, value in _conf
iguration_tokens.iteritems()) |
221 | 221 |
222 # FIXME: Update the original specifiers list and remove this once the old sy
ntax is gone. | 222 # FIXME: Update the original specifiers list and remove this once the old sy
ntax is gone. |
223 _expectation_tokens = { | 223 _expectation_tokens = { |
224 'Crash': 'CRASH', | 224 'Crash': 'CRASH', |
| 225 'Leak': 'LEAK', |
225 'Failure': 'FAIL', | 226 'Failure': 'FAIL', |
226 'ImageOnlyFailure': 'IMAGE', | 227 'ImageOnlyFailure': 'IMAGE', |
227 MISSING_KEYWORD: 'MISSING', | 228 MISSING_KEYWORD: 'MISSING', |
228 'Pass': 'PASS', | 229 'Pass': 'PASS', |
229 'Rebaseline': 'REBASELINE', | 230 'Rebaseline': 'REBASELINE', |
230 NEEDS_REBASELINE_KEYWORD: 'NEEDSREBASELINE', | 231 NEEDS_REBASELINE_KEYWORD: 'NEEDSREBASELINE', |
231 NEEDS_MANUAL_REBASELINE_KEYWORD: 'NEEDSMANUALREBASELINE', | 232 NEEDS_MANUAL_REBASELINE_KEYWORD: 'NEEDSMANUALREBASELINE', |
232 'Skip': 'SKIP', | 233 'Skip': 'SKIP', |
233 'Slow': 'SLOW', | 234 'Slow': 'SLOW', |
234 'Timeout': 'TIMEOUT', | 235 'Timeout': 'TIMEOUT', |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 | 800 |
800 # FIXME: Update to new syntax once the old format is no longer supported. | 801 # FIXME: Update to new syntax once the old format is no longer supported. |
801 EXPECTATIONS = {'pass': PASS, | 802 EXPECTATIONS = {'pass': PASS, |
802 'audio': AUDIO, | 803 'audio': AUDIO, |
803 'fail': FAIL, | 804 'fail': FAIL, |
804 'image': IMAGE, | 805 'image': IMAGE, |
805 'image+text': IMAGE_PLUS_TEXT, | 806 'image+text': IMAGE_PLUS_TEXT, |
806 'text': TEXT, | 807 'text': TEXT, |
807 'timeout': TIMEOUT, | 808 'timeout': TIMEOUT, |
808 'crash': CRASH, | 809 'crash': CRASH, |
| 810 'leak': LEAK, |
809 'missing': MISSING, | 811 'missing': MISSING, |
810 TestExpectationParser.SKIP_MODIFIER: SKIP, | 812 TestExpectationParser.SKIP_MODIFIER: SKIP, |
811 TestExpectationParser.NEEDS_REBASELINE_MODIFIER: NEEDS_REBAS
ELINE, | 813 TestExpectationParser.NEEDS_REBASELINE_MODIFIER: NEEDS_REBAS
ELINE, |
812 TestExpectationParser.NEEDS_MANUAL_REBASELINE_MODIFIER: NEED
S_MANUAL_REBASELINE, | 814 TestExpectationParser.NEEDS_MANUAL_REBASELINE_MODIFIER: NEED
S_MANUAL_REBASELINE, |
813 TestExpectationParser.WONTFIX_MODIFIER: WONTFIX, | 815 TestExpectationParser.WONTFIX_MODIFIER: WONTFIX, |
814 TestExpectationParser.SLOW_MODIFIER: SLOW, | 816 TestExpectationParser.SLOW_MODIFIER: SLOW, |
815 TestExpectationParser.REBASELINE_MODIFIER: REBASELINE, | 817 TestExpectationParser.REBASELINE_MODIFIER: REBASELINE, |
816 } | 818 } |
817 | 819 |
818 EXPECTATIONS_TO_STRING = dict((k, v) for (v, k) in EXPECTATIONS.iteritems()) | 820 EXPECTATIONS_TO_STRING = dict((k, v) for (v, k) in EXPECTATIONS.iteritems()) |
819 | 821 |
820 # (aggregated by category, pass/fail/skip, type) | 822 # (aggregated by category, pass/fail/skip, type) |
821 EXPECTATION_DESCRIPTIONS = {SKIP: 'skipped', | 823 EXPECTATION_DESCRIPTIONS = {SKIP: 'skipped', |
822 PASS: 'passes', | 824 PASS: 'passes', |
823 FAIL: 'failures', | 825 FAIL: 'failures', |
824 IMAGE: 'image-only failures', | 826 IMAGE: 'image-only failures', |
825 TEXT: 'text-only failures', | 827 TEXT: 'text-only failures', |
826 IMAGE_PLUS_TEXT: 'image and text failures', | 828 IMAGE_PLUS_TEXT: 'image and text failures', |
827 AUDIO: 'audio failures', | 829 AUDIO: 'audio failures', |
828 CRASH: 'crashes', | 830 CRASH: 'crashes', |
| 831 LEAK: 'leaks', |
829 TIMEOUT: 'timeouts', | 832 TIMEOUT: 'timeouts', |
830 MISSING: 'missing results'} | 833 MISSING: 'missing results'} |
831 | 834 |
832 NON_TEST_OUTCOME_EXPECTATIONS = (REBASELINE, SKIP, SLOW, WONTFIX) | 835 NON_TEST_OUTCOME_EXPECTATIONS = (REBASELINE, SKIP, SLOW, WONTFIX) |
833 | 836 |
834 BUILD_TYPES = ('debug', 'release') | 837 BUILD_TYPES = ('debug', 'release') |
835 | 838 |
836 TIMELINES = {TestExpectationParser.WONTFIX_MODIFIER: WONTFIX, | 839 TIMELINES = {TestExpectationParser.WONTFIX_MODIFIER: WONTFIX, |
837 'now': NOW} | 840 'now': NOW} |
838 | 841 |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1100 # If reconstitute_only_these is an empty list, we want to return ori
ginal_string. | 1103 # If reconstitute_only_these is an empty list, we want to return ori
ginal_string. |
1101 # So we need to compare reconstitute_only_these to None, not just ch
eck if it's falsey. | 1104 # So we need to compare reconstitute_only_these to None, not just ch
eck if it's falsey. |
1102 if reconstitute_only_these is None or expectation_line in reconstitu
te_only_these: | 1105 if reconstitute_only_these is None or expectation_line in reconstitu
te_only_these: |
1103 return expectation_line.to_string(test_configuration_converter) | 1106 return expectation_line.to_string(test_configuration_converter) |
1104 return expectation_line.original_string | 1107 return expectation_line.original_string |
1105 | 1108 |
1106 def nones_out(expectation_line): | 1109 def nones_out(expectation_line): |
1107 return expectation_line is not None | 1110 return expectation_line is not None |
1108 | 1111 |
1109 return "\n".join(filter(nones_out, map(serialize, expectation_lines))) | 1112 return "\n".join(filter(nones_out, map(serialize, expectation_lines))) |
OLD | NEW |