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

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py

Issue 1783073002: Run auto-formatter on files in webkitpy/layout_tests/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 9 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
OLDNEW
1 # Copyright (C) 2011 Google Inc. All rights reserved. 1 # Copyright (C) 2011 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 12 matching lines...) Expand all
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 28
29 import copy 29 import copy
30 30
31 31
32 class TestConfiguration(object): 32 class TestConfiguration(object):
33
33 def __init__(self, version, architecture, build_type): 34 def __init__(self, version, architecture, build_type):
34 self.version = version 35 self.version = version
35 self.architecture = architecture 36 self.architecture = architecture
36 self.build_type = build_type 37 self.build_type = build_type
37 38
38 @classmethod 39 @classmethod
39 def category_order(cls): 40 def category_order(cls):
40 """The most common human-readable order in which the configuration prope rties are listed.""" 41 """The most common human-readable order in which the configuration prope rties are listed."""
41 return ['version', 'architecture', 'build_type'] 42 return ['version', 'architecture', 'build_type']
42 43
(...skipping 15 matching lines...) Expand all
58 59
59 def __eq__(self, other): 60 def __eq__(self, other):
60 return self.__hash__() == other.__hash__() 61 return self.__hash__() == other.__hash__()
61 62
62 def values(self): 63 def values(self):
63 """Returns the configuration values of this instance as a tuple.""" 64 """Returns the configuration values of this instance as a tuple."""
64 return self.__dict__.values() 65 return self.__dict__.values()
65 66
66 67
67 class SpecifierSorter(object): 68 class SpecifierSorter(object):
69
68 def __init__(self, all_test_configurations=None, macros=None): 70 def __init__(self, all_test_configurations=None, macros=None):
69 self._specifier_to_category = {} 71 self._specifier_to_category = {}
70 72
71 if not all_test_configurations: 73 if not all_test_configurations:
72 return 74 return
73 for test_configuration in all_test_configurations: 75 for test_configuration in all_test_configurations:
74 for category, specifier in test_configuration.items(): 76 for category, specifier in test_configuration.items():
75 self.add_specifier(category, specifier) 77 self.add_specifier(category, specifier)
76 78
77 self.add_macros(macros) 79 self.add_macros(macros)
(...skipping 24 matching lines...) Expand all
102 category_slots[self.specifier_priority(specifier)].append(specifier) 104 category_slots[self.specifier_priority(specifier)].append(specifier)
103 105
104 def sort_and_return(result, specifier_list): 106 def sort_and_return(result, specifier_list):
105 specifier_list.sort() 107 specifier_list.sort()
106 return result + specifier_list 108 return result + specifier_list
107 109
108 return reduce(sort_and_return, category_slots, []) 110 return reduce(sort_and_return, category_slots, [])
109 111
110 112
111 class TestConfigurationConverter(object): 113 class TestConfigurationConverter(object):
114
112 def __init__(self, all_test_configurations, configuration_macros=None): 115 def __init__(self, all_test_configurations, configuration_macros=None):
113 self._all_test_configurations = all_test_configurations 116 self._all_test_configurations = all_test_configurations
114 self._configuration_macros = configuration_macros or {} 117 self._configuration_macros = configuration_macros or {}
115 self._specifier_to_configuration_set = {} 118 self._specifier_to_configuration_set = {}
116 self._specifier_sorter = SpecifierSorter() 119 self._specifier_sorter = SpecifierSorter()
117 self._collapsing_sets_by_size = {} 120 self._collapsing_sets_by_size = {}
118 self._junk_specifier_combinations = {} 121 self._junk_specifier_combinations = {}
119 self._collapsing_sets_by_category = {} 122 self._collapsing_sets_by_category = {}
120 matching_sets_by_category = {} 123 matching_sets_by_category = {}
121 for configuration in all_test_configurations: 124 for configuration in all_test_configurations:
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 specifiers_list.remove(item) 278 specifiers_list.remove(item)
276 specifiers_list.append(frozenset(common | diff)) 279 specifiers_list.append(frozenset(common | diff))
277 return True 280 return True
278 return False 281 return False
279 282
280 # 3) Abbreviate specifier sets by combining specifiers across categories . 283 # 3) Abbreviate specifier sets by combining specifiers across categories .
281 # (win7, release), (win10, release) --> (win7, win10, release) 284 # (win7, release), (win10, release) --> (win7, win10, release)
282 while try_abbreviating(self._collapsing_sets_by_size.values()): 285 while try_abbreviating(self._collapsing_sets_by_size.values()):
283 pass 286 pass
284 287
285
286 # 4) Substitute specifier subsets that match macros witin each set: 288 # 4) Substitute specifier subsets that match macros witin each set:
287 # (win7, win10, release) -> (win, release) 289 # (win7, win10, release) -> (win, release)
288 self.collapse_macros(self._configuration_macros, specifiers_list) 290 self.collapse_macros(self._configuration_macros, specifiers_list)
289 291
290 macro_keys = set(self._configuration_macros.keys()) 292 macro_keys = set(self._configuration_macros.keys())
291 293
292 # 5) Collapsing macros may have created combinations the can now be abbr eviated. 294 # 5) Collapsing macros may have created combinations the can now be abbr eviated.
293 # (win7, release), (linux, x86, release), (linux, x86_64, release) --> (win7, release), (linux, release) --> (win7, linux, release) 295 # (win7, release), (linux, x86, release), (linux, x86_64, release) --> (win7, release), (linux, release) --> (win7, linux, release)
294 while try_abbreviating([self._collapsing_sets_by_category['version'] | m acro_keys]): 296 while try_abbreviating([self._collapsing_sets_by_category['version'] | m acro_keys]):
295 pass 297 pass
296 298
297 # 6) Remove cases where we have collapsed but have all macros. 299 # 6) Remove cases where we have collapsed but have all macros.
298 # (android, win, mac, linux, release) --> (release) 300 # (android, win, mac, linux, release) --> (release)
299 specifiers_to_remove = [] 301 specifiers_to_remove = []
300 for specifier_set in specifiers_list: 302 for specifier_set in specifiers_list:
301 if macro_keys <= specifier_set: 303 if macro_keys <= specifier_set:
302 specifiers_to_remove.append(specifier_set) 304 specifiers_to_remove.append(specifier_set)
303 305
304 for specifier_set in specifiers_to_remove: 306 for specifier_set in specifiers_to_remove:
305 specifiers_list.remove(specifier_set) 307 specifiers_list.remove(specifier_set)
306 specifiers_list.append(frozenset(specifier_set - macro_keys)) 308 specifiers_list.append(frozenset(specifier_set - macro_keys))
307 309
308 return specifiers_list 310 return specifiers_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698