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

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/tool/commands/rebaseline_cl_unittest.py

Issue 2765863003: Refactoring: Replace test_prefix_list variables with TestBaselineSet objects. (Closed)
Patch Set: Created 3 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 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import json 5 import json
6 import optparse 6 import optparse
7 7
8 from webkitpy.common.net.buildbot import Build 8 from webkitpy.common.net.buildbot import Build
9 from webkitpy.common.net.git_cl import GitCL 9 from webkitpy.common.net.git_cl import GitCL
10 from webkitpy.common.checkout.git_mock import MockGit 10 from webkitpy.common.checkout.git_mock import MockGit
11 from webkitpy.common.net.layout_test_results import LayoutTestResults 11 from webkitpy.common.net.layout_test_results import LayoutTestResults
12 from webkitpy.common.system.log_testing import LoggingTestCase 12 from webkitpy.common.system.log_testing import LoggingTestCase
13 from webkitpy.layout_tests.builder_list import BuilderList 13 from webkitpy.layout_tests.builder_list import BuilderList
14 from webkitpy.tool.commands.rebaseline import TestBaselineSet
14 from webkitpy.tool.commands.rebaseline_cl import RebaselineCL 15 from webkitpy.tool.commands.rebaseline_cl import RebaselineCL
15 from webkitpy.tool.commands.rebaseline_unittest import BaseTestCase 16 from webkitpy.tool.commands.rebaseline_unittest import BaseTestCase
16 17
17 18
18 class RebaselineCLTest(BaseTestCase, LoggingTestCase): 19 class RebaselineCLTest(BaseTestCase, LoggingTestCase):
19 command_constructor = RebaselineCL 20 command_constructor = RebaselineCL
20 21
21 def setUp(self): 22 def setUp(self):
22 BaseTestCase.setUp(self) 23 BaseTestCase.setUp(self)
23 LoggingTestCase.setUp(self) 24 LoggingTestCase.setUp(self)
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 'fast/dom/prototype-taco.html', 122 'fast/dom/prototype-taco.html',
122 'svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation -attr.html', 123 'svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation -attr.html',
123 ], 124 ],
124 'ignored': [], 125 'ignored': [],
125 })) 126 }))
126 127
127 # Write to the mock filesystem so that these tests are considered to exi st. 128 # Write to the mock filesystem so that these tests are considered to exi st.
128 tests = [ 129 tests = [
129 'fast/dom/prototype-taco.html', 130 'fast/dom/prototype-taco.html',
130 'fast/dom/prototype-inheritance.html', 131 'fast/dom/prototype-inheritance.html',
132 'fast/dom/prototype-slowtest.html',
131 'fast/dom/prototype-newtest.html', 133 'fast/dom/prototype-newtest.html',
132 'svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.ht ml', 134 'svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.ht ml',
133 ] 135 ]
134 for test in tests: 136 for test in tests:
135 self._write(self.mac_port.host.filesystem.join(self.mac_port.layout_ tests_dir(), test), 'contents') 137 self._write(self.mac_port.host.filesystem.join(self.mac_port.layout_ tests_dir(), test), 'contents')
136 138
137 def tearDown(self): 139 def tearDown(self):
138 BaseTestCase.tearDown(self) 140 BaseTestCase.tearDown(self)
139 LoggingTestCase.tearDown(self) 141 LoggingTestCase.tearDown(self)
140 142
141 @staticmethod 143 @staticmethod
142 def command_options(**kwargs): 144 def command_options(**kwargs):
143 options = { 145 options = {
144 'only_changed_tests': False, 146 'only_changed_tests': False,
145 'dry_run': False, 147 'dry_run': False,
146 'optimize': True, 148 'optimize': True,
147 'results_directory': None, 149 'results_directory': None,
148 'verbose': False, 150 'verbose': False,
149 'trigger_jobs': False, 151 'trigger_jobs': False,
150 } 152 }
151 options.update(kwargs) 153 options.update(kwargs)
152 return optparse.Values(dict(**options)) 154 return optparse.Values(dict(**options))
153 155
154 def test_execute_with_issue_number_given(self): 156 def test_execute_basic(self):
155 return_code = self.command.execute(self.command_options(), [], self.tool ) 157 return_code = self.command.execute(self.command_options(), [], self.tool )
156 self.assertEqual(return_code, 0) 158 self.assertEqual(return_code, 0)
157 self.assertLog([ 159 self.assertLog([
158 'INFO: Rebaselining fast/dom/prototype-inheritance.html\n', 160 'INFO: Rebaselining fast/dom/prototype-inheritance.html\n',
159 'INFO: Rebaselining fast/dom/prototype-newtest.html\n', 161 'INFO: Rebaselining fast/dom/prototype-newtest.html\n',
160 'INFO: Rebaselining fast/dom/prototype-slowtest.html\n', 162 'INFO: Rebaselining fast/dom/prototype-slowtest.html\n',
161 'INFO: Rebaselining fast/dom/prototype-taco.html\n', 163 'INFO: Rebaselining fast/dom/prototype-taco.html\n',
162 'INFO: Rebaselining svg/dynamic-updates/SVGFEDropShadowElement-dom-s tdDeviation-attr.html\n', 164 'INFO: Rebaselining svg/dynamic-updates/SVGFEDropShadowElement-dom-s tdDeviation-attr.html\n',
163 ]) 165 ])
164 166
165 def test_execute_with_no_issue_number(self): 167 def test_execute_with_no_issue_number(self):
166 git_cl = GitCL(self.tool) 168 git_cl = GitCL(self.tool)
167 git_cl.get_issue_number = lambda: 'None' 169 git_cl.get_issue_number = lambda: 'None'
168 self.command.git_cl = lambda: git_cl 170 self.command.git_cl = lambda: git_cl
169 return_code = self.command.execute(self.command_options(), [], self.tool ) 171 return_code = self.command.execute(self.command_options(), [], self.tool )
170 self.assertEqual(return_code, 1) 172 self.assertEqual(return_code, 1)
171 self.assertLog(['ERROR: No issue number for current branch.\n']) 173 self.assertLog(['ERROR: No issue number for current branch.\n'])
172 174
173 def test_execute_with_issue_number_from_branch(self):
174 return_code = self.command.execute(self.command_options(), [], self.tool )
175 self.assertEqual(return_code, 0)
176 self.assertLog([
177 'INFO: Rebaselining fast/dom/prototype-inheritance.html\n',
178 'INFO: Rebaselining fast/dom/prototype-newtest.html\n',
179 'INFO: Rebaselining fast/dom/prototype-slowtest.html\n',
180 'INFO: Rebaselining fast/dom/prototype-taco.html\n',
181 'INFO: Rebaselining svg/dynamic-updates/SVGFEDropShadowElement-dom-s tdDeviation-attr.html\n',
182 ])
183
184 def test_execute_with_only_changed_tests_option(self): 175 def test_execute_with_only_changed_tests_option(self):
185 return_code = self.command.execute(self.command_options(only_changed_tes ts=True), [], self.tool) 176 return_code = self.command.execute(self.command_options(only_changed_tes ts=True), [], self.tool)
186 self.assertEqual(return_code, 0) 177 self.assertEqual(return_code, 0)
187 # svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.html 178 # svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.html
188 # is in the list of failed tests, but not in the list of files modified 179 # is in the list of failed tests, but not in the list of files modified
189 # in the given CL; it should be included because all_tests is set to Tru e. 180 # in the given CL; it should be included because all_tests is set to Tru e.
190 self.assertLog([ 181 self.assertLog([
191 'INFO: Rebaselining fast/dom/prototype-inheritance.html\n', 182 'INFO: Rebaselining fast/dom/prototype-inheritance.html\n',
192 'INFO: Rebaselining fast/dom/prototype-taco.html\n', 183 'INFO: Rebaselining fast/dom/prototype-taco.html\n',
193 ]) 184 ])
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 ]) 257 ])
267 258
268 def test_rebaseline_calls(self): 259 def test_rebaseline_calls(self):
269 """Tests the list of commands that are invoked when rebaseline is called .""" 260 """Tests the list of commands that are invoked when rebaseline is called ."""
270 # First write test contents to the mock filesystem so that 261 # First write test contents to the mock filesystem so that
271 # fast/dom/prototype-taco.html is considered a real test to rebaseline. 262 # fast/dom/prototype-taco.html is considered a real test to rebaseline.
272 port = self.tool.port_factory.get('test-win-win7') 263 port = self.tool.port_factory.get('test-win-win7')
273 self._write( 264 self._write(
274 port.host.filesystem.join(port.layout_tests_dir(), 'fast/dom/prototy pe-taco.html'), 265 port.host.filesystem.join(port.layout_tests_dir(), 'fast/dom/prototy pe-taco.html'),
275 'test contents') 266 'test contents')
267 test_baseline_set = TestBaselineSet(self.tool)
268 test_baseline_set.add('fast/dom/prototype-taco.html', Build('MOCK Try Wi n', 5000))
276 269
277 self.command.rebaseline( 270 self.command.rebaseline(self.command_options(), test_baseline_set)
278 self.command_options(),
279 {'fast/dom/prototype-taco.html': [Build('MOCK Try Win', 5000)]})
280 271
281 self.assertEqual( 272 self.assertEqual(
282 self.tool.executive.calls, 273 self.tool.executive.calls,
283 [ 274 [
284 [['python', 'echo', 'copy-existing-baselines-internal', '--suffi xes', 'txt', 275 [['python', 'echo', 'copy-existing-baselines-internal', '--suffi xes', 'txt',
285 '--builder', 'MOCK Try Win', '--test', 'fast/dom/prototype-tac o.html']], 276 '--builder', 'MOCK Try Win', '--test', 'fast/dom/prototype-tac o.html']],
286 [['python', 'echo', 'rebaseline-test-internal', '--suffixes', 't xt', 277 [['python', 'echo', 'rebaseline-test-internal', '--suffixes', 't xt',
287 '--builder', 'MOCK Try Win', '--test', 'fast/dom/prototype-tac o.html', '--build-number', '5000']], 278 '--builder', 'MOCK Try Win', '--test', 'fast/dom/prototype-tac o.html', '--build-number', '5000']],
288 [['python', 'echo', 'optimize-baselines', '--suffixes', 'txt', ' fast/dom/prototype-taco.html']] 279 [['python', 'echo', 'optimize-baselines', '--suffixes', 'txt', ' fast/dom/prototype-taco.html']]
289 ]) 280 ])
(...skipping 30 matching lines...) Expand all
320 311
321 def test_bails_when_there_are_unstaged_baselines(self): 312 def test_bails_when_there_are_unstaged_baselines(self):
322 git = self.tool.git() 313 git = self.tool.git()
323 git.unstaged_changes = lambda: {'third_party/WebKit/LayoutTests/my-test- expected.txt': '?'} 314 git.unstaged_changes = lambda: {'third_party/WebKit/LayoutTests/my-test- expected.txt': '?'}
324 return_code = self.command.execute(self.command_options(), [], self.tool ) 315 return_code = self.command.execute(self.command_options(), [], self.tool )
325 self.assertEqual(return_code, 1) 316 self.assertEqual(return_code, 1)
326 self.assertLog([ 317 self.assertLog([
327 'ERROR: Aborting: there are unstaged baselines:\n', 318 'ERROR: Aborting: there are unstaged baselines:\n',
328 'ERROR: /mock-checkout/third_party/WebKit/LayoutTests/my-test-expe cted.txt\n', 319 'ERROR: /mock-checkout/third_party/WebKit/LayoutTests/my-test-expe cted.txt\n',
329 ]) 320 ])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698