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

Side by Side Diff: Tools/Scripts/webkitpy/layout_tests/layout_package/bot_test_expectations.py

Issue 20830003: Get rid of the distinction between modifiers and expectations. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: clean up a couple things Created 7 years, 4 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) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 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 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 RESULT_TYPES_TO_IGNORE = ['N', 'X', 'Y'] 136 RESULT_TYPES_TO_IGNORE = ['N', 'X', 'Y']
137 137
138 def __init__(self, results_json): 138 def __init__(self, results_json):
139 self.results_json = results_json 139 self.results_json = results_json
140 140
141 def _line_from_test_and_flaky_types_and_bug_urls(self, test_path, flaky_type s, bug_urls): 141 def _line_from_test_and_flaky_types_and_bug_urls(self, test_path, flaky_type s, bug_urls):
142 line = TestExpectationLine() 142 line = TestExpectationLine()
143 line.original_string = test_path 143 line.original_string = test_path
144 line.name = test_path 144 line.name = test_path
145 line.filename = test_path 145 line.filename = test_path
146 line.modifiers = bug_urls if bug_urls else "" 146 line.specifiers = bug_urls if bug_urls else ""
147 line.expectations = sorted(map(self.results_json.expectation_for_type, f laky_types)) 147 line.expectations = sorted(map(self.results_json.expectation_for_type, f laky_types))
148 return line 148 return line
149 149
150 def flakes_by_path(self, only_ignore_very_flaky): 150 def flakes_by_path(self, only_ignore_very_flaky):
151 """Sets test expectations to bot results if there are at least two disti nct results.""" 151 """Sets test expectations to bot results if there are at least two disti nct results."""
152 flakes_by_path = {} 152 flakes_by_path = {}
153 for test_path, entry in self.results_json.walk_results(): 153 for test_path, entry in self.results_json.walk_results():
154 results_dict = entry[self.results_json.RESULTS_KEY] 154 results_dict = entry[self.results_json.RESULTS_KEY]
155 flaky_types = self._flaky_types_in_results(results_dict, only_ignore _very_flaky) 155 flaky_types = self._flaky_types_in_results(results_dict, only_ignore _very_flaky)
156 if len(flaky_types) <= 1: 156 if len(flaky_types) <= 1:
157 continue 157 continue
158 flakes_by_path[test_path] = sorted(map(self.results_json.expectation _for_type, flaky_types)) 158 flakes_by_path[test_path] = sorted(map(self.results_json.expectation _for_type, flaky_types))
159 return flakes_by_path 159 return flakes_by_path
160 160
161 def unexpected_results_by_path(self): 161 def unexpected_results_by_path(self):
162 """For tests with unexpected results, returns original expectations + re sults.""" 162 """For tests with unexpected results, returns original expectations + re sults."""
163 def exp_to_string(exp): 163 def exp_to_string(exp):
164 return (TestExpectations.EXPECTATIONS_TO_STRING.get(exp, None) or 164 return TestExpectations.EXPECTATIONS_TO_STRING.get(exp, None).upper( )
165 TestExpectations.MODIFIERS_TO_STRING.get(exp, None)).upper()
166 165
167 def string_to_exp(string): 166 def string_to_exp(string):
168 # Needs a bit more logic than the method above, 167 # Needs a bit more logic than the method above,
169 # since a PASS is 0 and evaluates to False. 168 # since a PASS is 0 and evaluates to False.
170 result = TestExpectations.EXPECTATIONS.get(string.lower(), None) 169 result = TestExpectations.EXPECTATIONS.get(string.lower(), None)
171 if not result is None: 170 if not result is None:
172 return result 171 return result
173 result = TestExpectations.MODIFIERS.get(string.lower(), None)
174 if not result is None:
175 return result
176 raise ValueError(string) 172 raise ValueError(string)
177 173
178 unexpected_results_by_path = {} 174 unexpected_results_by_path = {}
179 for test_path, entry in self.results_json.walk_results(): 175 for test_path, entry in self.results_json.walk_results():
180 # Expectations for this test. No expectation defaults to PASS. 176 # Expectations for this test. No expectation defaults to PASS.
181 exp_string = entry.get(self.results_json.EXPECTATIONS_KEY, u'PASS') 177 exp_string = entry.get(self.results_json.EXPECTATIONS_KEY, u'PASS')
182 178
183 # All run-length-encoded results for this test. 179 # All run-length-encoded results for this test.
184 results_dict = entry.get(self.results_json.RESULTS_KEY, {}) 180 results_dict = entry.get(self.results_json.RESULTS_KEY, {})
185 181
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 # Otherwise, we include lots of false-positives due to tests tha t fail 228 # Otherwise, we include lots of false-positives due to tests tha t fail
233 # for a couple runs and then start passing. 229 # for a couple runs and then start passing.
234 # FIXME: Maybe we should make this more liberal and consider it a flake 230 # FIXME: Maybe we should make this more liberal and consider it a flake
235 # even if we only see that failure once. 231 # even if we only see that failure once.
236 seen_results[result_type] = True 232 seen_results[result_type] = True
237 continue 233 continue
238 234
239 results_map[result_type] = True 235 results_map[result_type] = True
240 236
241 return results_map.keys() 237 return results_map.keys()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698