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

Side by Side Diff: gm/rebaseline_server/imagepairset_test.py

Issue 376623002: rebaseline_server: allow JSON to control column filtering (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Ravi suggestions Created 6 years, 5 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
« no previous file with comments | « gm/rebaseline_server/imagepairset.py ('k') | gm/rebaseline_server/results.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 """ 3 """
4 Copyright 2014 Google Inc. 4 Copyright 2014 Google Inc.
5 5
6 Use of this source code is governed by a BSD-style license that can be 6 Use of this source code is governed by a BSD-style license that can be
7 found in the LICENSE file. 7 found in the LICENSE file.
8 8
9 Test imagepairset.py 9 Test imagepairset.py
10 """ 10 """
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_1_AS_DICT), 82 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_1_AS_DICT),
83 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_2_AS_DICT), 83 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_2_AS_DICT),
84 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_3_AS_DICT), 84 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_3_AS_DICT),
85 ] 85 ]
86 expected_imageset_dict = { 86 expected_imageset_dict = {
87 'extraColumnHeaders': { 87 'extraColumnHeaders': {
88 'builder': { 88 'builder': {
89 'headerText': 'builder', 89 'headerText': 'builder',
90 'isFilterable': True, 90 'isFilterable': True,
91 'isSortable': True, 91 'isSortable': True,
92 'useFreeformFilter': False,
92 'valuesAndCounts': [('MyBuilder', 3)], 93 'valuesAndCounts': [('MyBuilder', 3)],
93 }, 94 },
94 'test': { 95 'test': {
95 'headerText': 'which GM test', 96 'headerText': 'which GM test',
96 'headerUrl': 'http://learn/about/gm/tests', 97 'headerUrl': 'http://learn/about/gm/tests',
97 'isFilterable': True, 98 'isFilterable': True,
98 'isSortable': False, 99 'isSortable': False,
100 'useFreeformFilter': False,
101 'valuesAndCounts': [('test1', 1),
102 ('test2', 1),
103 ('test3', 1)],
99 }, 104 },
100 }, 105 },
106 'extraColumnOrder': ['builder', 'test'],
101 'imagePairs': [ 107 'imagePairs': [
102 IMAGEPAIR_1_AS_DICT, 108 IMAGEPAIR_1_AS_DICT,
103 IMAGEPAIR_2_AS_DICT, 109 IMAGEPAIR_2_AS_DICT,
104 IMAGEPAIR_3_AS_DICT, 110 IMAGEPAIR_3_AS_DICT,
105 ], 111 ],
106 'imageSets': { 112 'imageSets': {
107 'imageA': { 113 'imageA': {
108 'baseUrl': BASE_URL_1, 114 'baseUrl': BASE_URL_1,
109 'description': SET_A_DESCRIPTION, 115 'description': SET_A_DESCRIPTION,
110 }, 116 },
(...skipping 18 matching lines...) Expand all
129 for image_pair in image_pairs: 135 for image_pair in image_pairs:
130 image_pair_set.add_image_pair(image_pair) 136 image_pair_set.add_image_pair(image_pair)
131 # The 'builder' column header uses the default settings, 137 # The 'builder' column header uses the default settings,
132 # but the 'test' column header has manual adjustments. 138 # but the 'test' column header has manual adjustments.
133 image_pair_set.set_column_header_factory( 139 image_pair_set.set_column_header_factory(
134 'test', 140 'test',
135 column.ColumnHeaderFactory( 141 column.ColumnHeaderFactory(
136 header_text='which GM test', 142 header_text='which GM test',
137 header_url='http://learn/about/gm/tests', 143 header_url='http://learn/about/gm/tests',
138 is_filterable=True, 144 is_filterable=True,
139 is_sortable=False, 145 is_sortable=False))
140 include_values_and_counts=False))
141 self.assertEqual(image_pair_set.as_dict(), expected_imageset_dict) 146 self.assertEqual(image_pair_set.as_dict(), expected_imageset_dict)
142 147
143 def test_mismatched_base_url(self): 148 def test_mismatched_base_url(self):
144 """Confirms that mismatched base_urls will cause an exception.""" 149 """Confirms that mismatched base_urls will cause an exception."""
145 image_pair_set = imagepairset.ImagePairSet( 150 image_pair_set = imagepairset.ImagePairSet(
146 diff_base_url=DIFF_BASE_URL) 151 diff_base_url=DIFF_BASE_URL)
147 image_pair_set.add_image_pair( 152 image_pair_set.add_image_pair(
148 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_1_AS_DICT)) 153 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_1_AS_DICT))
149 image_pair_set.add_image_pair( 154 image_pair_set.add_image_pair(
150 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_2_AS_DICT)) 155 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_2_AS_DICT))
151 with self.assertRaises(Exception): 156 with self.assertRaises(Exception):
152 image_pair_set.add_image_pair( 157 image_pair_set.add_image_pair(
153 MockImagePair(base_url=BASE_URL_2, 158 MockImagePair(base_url=BASE_URL_2,
154 dict_to_return=IMAGEPAIR_3_AS_DICT)) 159 dict_to_return=IMAGEPAIR_3_AS_DICT))
155 160
161 def test_missing_column_ids(self):
162 """Confirms that passing truncated column_ids_in_order to as_dict()
163 will cause an exception."""
164 image_pair_set = imagepairset.ImagePairSet(
165 diff_base_url=DIFF_BASE_URL)
166 image_pair_set.add_image_pair(
167 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_1_AS_DICT))
168 image_pair_set.add_image_pair(
169 MockImagePair(base_url=BASE_URL_1, dict_to_return=IMAGEPAIR_2_AS_DICT))
170 # Call as_dict() with default or reasonable column_ids_in_order.
171 image_pair_set.as_dict()
172 image_pair_set.as_dict(column_ids_in_order=['test', 'builder'])
173 image_pair_set.as_dict(column_ids_in_order=['test', 'builder', 'extra'])
174 # Call as_dict() with not enough column_ids.
175 with self.assertRaises(Exception):
176 image_pair_set.as_dict(column_ids_in_order=['builder'])
177
156 178
157 class MockImagePair(object): 179 class MockImagePair(object):
158 """Mock ImagePair object, which will return canned results.""" 180 """Mock ImagePair object, which will return canned results."""
159 def __init__(self, base_url, dict_to_return): 181 def __init__(self, base_url, dict_to_return):
160 """ 182 """
161 Args: 183 Args:
162 base_url: base_url attribute for this object 184 base_url: base_url attribute for this object
163 dict_to_return: dictionary to return from as_dict() 185 dict_to_return: dictionary to return from as_dict()
164 """ 186 """
165 self.base_url = base_url 187 self.base_url = base_url
166 self.extra_columns_dict = dict_to_return.get( 188 self.extra_columns_dict = dict_to_return.get(
167 imagepair.KEY__IMAGEPAIRS__EXTRACOLUMNS, None) 189 imagepair.KEY__IMAGEPAIRS__EXTRACOLUMNS, None)
168 self._dict_to_return = dict_to_return 190 self._dict_to_return = dict_to_return
169 191
170 def as_dict(self): 192 def as_dict(self):
171 return self._dict_to_return 193 return self._dict_to_return
172 194
173 195
174 def main(): 196 def main():
175 suite = unittest.TestLoader().loadTestsFromTestCase(ImagePairSetTest) 197 suite = unittest.TestLoader().loadTestsFromTestCase(ImagePairSetTest)
176 unittest.TextTestRunner(verbosity=2).run(suite) 198 unittest.TextTestRunner(verbosity=2).run(suite)
177 199
178 200
179 if __name__ == '__main__': 201 if __name__ == '__main__':
180 main() 202 main()
OLDNEW
« no previous file with comments | « gm/rebaseline_server/imagepairset.py ('k') | gm/rebaseline_server/results.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698