Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py

Issue 294973008: Add --sanitizer-mode to run-webkit-tests (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rename command line flag, add tests; ready for review Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 866 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 drop any pixel failures and return the remaining expectations. For examp le, 877 drop any pixel failures and return the remaining expectations. For examp le,
878 if we're not running pixel tests, then tests expected to fail as IMAGE 878 if we're not running pixel tests, then tests expected to fail as IMAGE
879 will PASS.""" 879 will PASS."""
880 expected_results = expected_results.copy() 880 expected_results = expected_results.copy()
881 if IMAGE in expected_results: 881 if IMAGE in expected_results:
882 expected_results.remove(IMAGE) 882 expected_results.remove(IMAGE)
883 expected_results.add(PASS) 883 expected_results.add(PASS)
884 return expected_results 884 return expected_results
885 885
886 @staticmethod 886 @staticmethod
887 def remove_non_sanitizer_failures(expected_results):
888 """Returns a copy of the expected results for a test, except that we
889 drop any failures that the sanitizers don't care about."""
890 expected_results = expected_results.copy()
891 for result in (IMAGE, FAIL, IMAGE_PLUS_TEXT):
892 if result in expected_results:
893 expected_results.remove(result)
894 expected_results.add(PASS)
895 return expected_results
896
897 @staticmethod
887 def has_pixel_failures(actual_results): 898 def has_pixel_failures(actual_results):
888 return IMAGE in actual_results or FAIL in actual_results 899 return IMAGE in actual_results or FAIL in actual_results
889 900
890 @staticmethod 901 @staticmethod
891 def suffixes_for_expectations(expectations): 902 def suffixes_for_expectations(expectations):
892 suffixes = set() 903 suffixes = set()
893 if IMAGE in expectations: 904 if IMAGE in expectations:
894 suffixes.add('png') 905 suffixes.add('png')
895 if FAIL in expectations: 906 if FAIL in expectations:
896 suffixes.add('txt') 907 suffixes.add('txt')
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 # FIXME: Change the callsites to use TestExpectationsModel and remove. 991 # FIXME: Change the callsites to use TestExpectationsModel and remove.
981 def get_tests_with_timeline(self, timeline): 992 def get_tests_with_timeline(self, timeline):
982 return self._model.get_tests_with_timeline(timeline) 993 return self._model.get_tests_with_timeline(timeline)
983 994
984 def get_expectations_string(self, test): 995 def get_expectations_string(self, test):
985 return self._model.get_expectations_string(test) 996 return self._model.get_expectations_string(test)
986 997
987 def expectation_to_string(self, expectation): 998 def expectation_to_string(self, expectation):
988 return self._model.expectation_to_string(expectation) 999 return self._model.expectation_to_string(expectation)
989 1000
990 def matches_an_expected_result(self, test, result, pixel_tests_are_enabled): 1001 def matches_an_expected_result(self, test, result, pixel_tests_are_enabled, sanitizer_is_enabled):
991 expected_results = self._model.get_expectations(test) 1002 expected_results = self._model.get_expectations(test)
992 if not pixel_tests_are_enabled: 1003 if sanitizer_is_enabled:
1004 expected_results = self.remove_non_sanitizer_failures(expected_resul ts)
1005 elif not pixel_tests_are_enabled:
993 expected_results = self.remove_pixel_failures(expected_results) 1006 expected_results = self.remove_pixel_failures(expected_results)
994 return self.result_was_expected(result, expected_results, self.is_rebase lining(test)) 1007 return self.result_was_expected(result, expected_results, self.is_rebase lining(test))
995 1008
996 def is_rebaselining(self, test): 1009 def is_rebaselining(self, test):
997 return REBASELINE in self._model.get_expectations(test) 1010 return REBASELINE in self._model.get_expectations(test)
998 1011
999 def _shorten_filename(self, filename): 1012 def _shorten_filename(self, filename):
1000 if filename.startswith(self._port.path_from_webkit_base()): 1013 if filename.startswith(self._port.path_from_webkit_base()):
1001 return self._port.host.filesystem.relpath(filename, self._port.path_ from_webkit_base()) 1014 return self._port.host.filesystem.relpath(filename, self._port.path_ from_webkit_base())
1002 return filename 1015 return filename
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 # If reconstitute_only_these is an empty list, we want to return ori ginal_string. 1117 # If reconstitute_only_these is an empty list, we want to return ori ginal_string.
1105 # So we need to compare reconstitute_only_these to None, not just ch eck if it's falsey. 1118 # So we need to compare reconstitute_only_these to None, not just ch eck if it's falsey.
1106 if reconstitute_only_these is None or expectation_line in reconstitu te_only_these: 1119 if reconstitute_only_these is None or expectation_line in reconstitu te_only_these:
1107 return expectation_line.to_string(test_configuration_converter) 1120 return expectation_line.to_string(test_configuration_converter)
1108 return expectation_line.original_string 1121 return expectation_line.original_string
1109 1122
1110 def nones_out(expectation_line): 1123 def nones_out(expectation_line):
1111 return expectation_line is not None 1124 return expectation_line is not None
1112 1125
1113 return "\n".join(filter(nones_out, map(serialize, expectation_lines))) 1126 return "\n".join(filter(nones_out, map(serialize, expectation_lines)))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698