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

Side by Side Diff: Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py

Issue 302003009: Make rebaselining not use gigabytes of memory. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address review comments 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
« no previous file with comments | « Tools/Scripts/webkitpy/tool/commands/rebaseline.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 15 matching lines...) Expand all
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 webkitpy.thirdparty.unittest2 as unittest 29 import webkitpy.thirdparty.unittest2 as unittest
30 30
31 from webkitpy.common.checkout.baselineoptimizer import BaselineOptimizer 31 from webkitpy.common.checkout.baselineoptimizer import BaselineOptimizer
32 from webkitpy.common.checkout.scm.scm_mock import MockSCM 32 from webkitpy.common.checkout.scm.scm_mock import MockSCM
33 from webkitpy.common.host_mock import MockHost 33 from webkitpy.common.host_mock import MockHost
34 from webkitpy.common.net.buildbot.buildbot_mock import MockBuilder 34 from webkitpy.common.net.buildbot.buildbot_mock import MockBuilder
35 from webkitpy.common.net.layouttestresults import LayoutTestResults 35 from webkitpy.common.net.layouttestresults import LayoutTestResults
36 from webkitpy.common.system.executive_mock import MockExecutive
36 from webkitpy.common.system.executive_mock import MockExecutive2 37 from webkitpy.common.system.executive_mock import MockExecutive2
37 from webkitpy.common.system.outputcapture import OutputCapture 38 from webkitpy.common.system.outputcapture import OutputCapture
38 from webkitpy.thirdparty.mock import Mock 39 from webkitpy.thirdparty.mock import Mock
39 from webkitpy.tool.commands.rebaseline import * 40 from webkitpy.tool.commands.rebaseline import *
40 from webkitpy.tool.mocktool import MockTool, MockOptions 41 from webkitpy.tool.mocktool import MockTool, MockOptions
41 42
42 43
43 class _BaseTestCase(unittest.TestCase): 44 class _BaseTestCase(unittest.TestCase):
44 MOCK_WEB_RESULT = 'MOCK Web result, convert 404 to None=True' 45 MOCK_WEB_RESULT = 'MOCK Web result, convert 404 to None=True'
45 WEB_PREFIX = 'http://example.com/f/builders/WebKit Mac10.7/results/layout-te st-results' 46 WEB_PREFIX = 'http://example.com/f/builders/WebKit Mac10.7/results/layout-te st-results'
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 "actual": "PASS" 354 "actual": "PASS"
354 } 355 }
355 } 356 }
356 } 357 }
357 });""") 358 });""")
358 return self.command._builder_data 359 return self.command._builder_data
359 360
360 self.command.builder_data = builder_data 361 self.command.builder_data = builder_data
361 362
362 options = MockOptions(optimize=True, verbose=True, results_directory=Non e) 363 options = MockOptions(optimize=True, verbose=True, results_directory=Non e)
364
365 self._write(self.lion_expectations_path, "Bug(x) userscripts/first-test. html [ ImageOnlyFailure ]\n")
363 self._write("userscripts/first-test.html", "Dummy test contents") 366 self._write("userscripts/first-test.html", "Dummy test contents")
367
364 self.command._rebaseline(options, {"userscripts/first-test.html": {"MOC K builder": ["txt", "png"]}}) 368 self.command._rebaseline(options, {"userscripts/first-test.html": {"MOC K builder": ["txt", "png"]}})
365 369
366 # Note that we have one run_in_parallel() call followed by a run_command () 370 # Note that we have one run_in_parallel() call followed by a run_command ()
367 self.assertEqual(self.tool.executive.calls, 371 self.assertEqual(self.tool.executive.calls,
368 [[['echo', 'optimize-baselines', '--no-modify-scm', '--suffixes', '' , 'userscripts/first-test.html', '--verbose']]]) 372 [[['echo', 'optimize-baselines', '--no-modify-scm', '--suffixes', '' , 'userscripts/first-test.html', '--verbose']]])
369 373
370 def test_rebaseline_all(self): 374 def test_rebaseline_all(self):
371 self._setup_mock_builder_data() 375 self._setup_mock_builder_data()
372 376
373 options = MockOptions(optimize=True, verbose=True, results_directory=Non e) 377 options = MockOptions(optimize=True, verbose=True, results_directory=Non e)
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 self._write("SmokeTests", "fast/html/article-element.html") 511 self._write("SmokeTests", "fast/html/article-element.html")
508 self._write("userscripts/first-test.html", "Dummy test contents") 512 self._write("userscripts/first-test.html", "Dummy test contents")
509 self._setup_mock_builder_data() 513 self._setup_mock_builder_data()
510 514
511 self.command._rebaseline(options, {"userscripts/first-test.html": {"Web Kit Mac10.7": ["txt", "png"]}}) 515 self.command._rebaseline(options, {"userscripts/first-test.html": {"Web Kit Mac10.7": ["txt", "png"]}})
512 516
513 new_expectations = self._read(self.lion_expectations_path) 517 new_expectations = self._read(self.lion_expectations_path)
514 self.assertMultiLineEqual(new_expectations, "Bug(x) [ Linux Mavericks Mo untainLion Retina SnowLeopard Win ] userscripts/first-test.html [ ImageOnlyFailu re ]\n") 518 self.assertMultiLineEqual(new_expectations, "Bug(x) [ Linux Mavericks Mo untainLion Retina SnowLeopard Win ] userscripts/first-test.html [ ImageOnlyFailu re ]\n")
515 519
516 520
517
518 class TestRebaseline(_BaseTestCase): 521 class TestRebaseline(_BaseTestCase):
519 # This command shares most of its logic with RebaselineJson, so these tests just test what is different. 522 # This command shares most of its logic with RebaselineJson, so these tests just test what is different.
520 523
521 command_constructor = Rebaseline # AKA webkit-patch rebaseline 524 command_constructor = Rebaseline # AKA webkit-patch rebaseline
522 525
523 def test_rebaseline(self): 526 def test_rebaseline(self):
524 self.command._builders_to_pull_from = lambda: [MockBuilder('MOCK builder ')] 527 self.command._builders_to_pull_from = lambda: [MockBuilder('MOCK builder ')]
525 528
526 self._write("userscripts/first-test.html", "test data") 529 self._write("userscripts/first-test.html", "test data")
527 530
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 builders._exact_matches = old_exact_matches 563 builders._exact_matches = old_exact_matches
561 564
562 calls = filter(lambda x: x != ['qmake', '-v'] and x[0] != 'perl', self.t ool.executive.calls) 565 calls = filter(lambda x: x != ['qmake', '-v'] and x[0] != 'perl', self.t ool.executive.calls)
563 self.assertEqual(calls, 566 self.assertEqual(calls,
564 [[['echo', 'copy-existing-baselines-internal', '--suffixes', 'txt,pn g', '--builder', 'MOCK builder', '--test', 'userscripts/first-test.html', '--ver bose'], 567 [[['echo', 'copy-existing-baselines-internal', '--suffixes', 'txt,pn g', '--builder', 'MOCK builder', '--test', 'userscripts/first-test.html', '--ver bose'],
565 ['echo', 'copy-existing-baselines-internal', '--suffixes', 'txt,pn g', '--builder', 'MOCK builder', '--test', 'userscripts/second-test.html', '--ve rbose']], 568 ['echo', 'copy-existing-baselines-internal', '--suffixes', 'txt,pn g', '--builder', 'MOCK builder', '--test', 'userscripts/second-test.html', '--ve rbose']],
566 [['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--b uilder', 'MOCK builder', '--test', 'userscripts/first-test.html', '--verbose'], 569 [['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--b uilder', 'MOCK builder', '--test', 'userscripts/first-test.html', '--verbose'],
567 ['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--b uilder', 'MOCK builder', '--test', 'userscripts/second-test.html', '--verbose']] ]) 570 ['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--b uilder', 'MOCK builder', '--test', 'userscripts/second-test.html', '--verbose']] ])
568 571
569 572
573 class MockLineRemovingExecutive(MockExecutive):
574 def run_in_parallel(self, commands):
575 assert len(commands)
576
577 num_previous_calls = len(self.calls)
578 command_outputs = []
579 for cmd_line, cwd in commands:
580 out = self.run_command(cmd_line, cwd=cwd)
581 if 'rebaseline-test-internal' in cmd_line:
582 out = '{"add": [], "remove-lines": [{"test": "%s", "builder": "% s"}], "delete": []}\n' % (cmd_line[7], cmd_line[5])
583 command_outputs.append([0, out, ''])
584
585 new_calls = self.calls[num_previous_calls:]
586 self.calls = self.calls[:num_previous_calls]
587 self.calls.append(new_calls)
588 return command_outputs
589
590
570 class TestRebaselineExpectations(_BaseTestCase): 591 class TestRebaselineExpectations(_BaseTestCase):
571 command_constructor = RebaselineExpectations 592 command_constructor = RebaselineExpectations
572 593
573 def setUp(self): 594 def setUp(self):
574 super(TestRebaselineExpectations, self).setUp() 595 super(TestRebaselineExpectations, self).setUp()
575 self.options = MockOptions(optimize=False, builders=None, suffixes=['txt '], verbose=False, platform=None, results_directory=None) 596 self.options = MockOptions(optimize=False, builders=None, suffixes=['txt '], verbose=False, platform=None, results_directory=None)
576 597
598 def _write_test_file(self, port, path, contents):
599 abs_path = self.tool.filesystem.join(port.layout_tests_dir(), path)
600 self.tool.filesystem.write_text_file(abs_path, contents)
601
602 def _setup_test_port(self):
603 test_port = self.tool.port_factory.get('test')
604 original_get = self.tool.port_factory.get
605
606 def get_test_port(port_name=None, options=None, **kwargs):
607 if not port_name:
608 return test_port
609 return original_get(port_name, options, **kwargs)
610 # Need to make sure all the ports grabbed use the test checkout path ins tead of the mock checkout path.
611 # FIXME: crbug.com/279494 - we shouldn't be doing this.
612 self.tool.port_factory.get = get_test_port
613
614 return test_port
615
577 def test_rebaseline_expectations(self): 616 def test_rebaseline_expectations(self):
578 self._zero_out_test_expectations() 617 self._zero_out_test_expectations()
579 618
580 self.tool.executive = MockExecutive2() 619 self.tool.executive = MockExecutive2()
581 620
582 def builder_data(): 621 def builder_data():
583 self.command._builder_data['MOCK SnowLeopard'] = self.command._build er_data['MOCK Leopard'] = LayoutTestResults.results_from_string("""ADD_RESULTS({ 622 self.command._builder_data['MOCK SnowLeopard'] = self.command._build er_data['MOCK Leopard'] = LayoutTestResults.results_from_string("""ADD_RESULTS({
584 "tests": { 623 "tests": {
585 "userscripts": { 624 "userscripts": {
586 "another-test.html": { 625 "another-test.html": {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 self._write('/userscripts/another-test.html', '') 697 self._write('/userscripts/another-test.html', '')
659 698
660 self.assertDictEqual(self.command._tests_to_rebaseline(self.lion_port), {'userscripts/another-test.html': set(['png', 'txt', 'wav'])}) 699 self.assertDictEqual(self.command._tests_to_rebaseline(self.lion_port), {'userscripts/another-test.html': set(['png', 'txt', 'wav'])})
661 self.assertEqual(self._read(self.lion_expectations_path), '') 700 self.assertEqual(self._read(self.lion_expectations_path), '')
662 701
663 def test_rebaseline_without_other_expectations(self): 702 def test_rebaseline_without_other_expectations(self):
664 self._write("userscripts/another-test.html", "Dummy test contents") 703 self._write("userscripts/another-test.html", "Dummy test contents")
665 self._write(self.lion_expectations_path, "Bug(x) userscripts/another-tes t.html [ Rebaseline ]\n") 704 self._write(self.lion_expectations_path, "Bug(x) userscripts/another-tes t.html [ Rebaseline ]\n")
666 self.assertDictEqual(self.command._tests_to_rebaseline(self.lion_port), {'userscripts/another-test.html': ('png', 'wav', 'txt')}) 705 self.assertDictEqual(self.command._tests_to_rebaseline(self.lion_port), {'userscripts/another-test.html': ('png', 'wav', 'txt')})
667 706
707 def test_rebaseline_test_passes_everywhere(self):
708 test_port = self._setup_test_port()
709
710 old_builder_data = self.command.builder_data
711
712 def builder_data():
713 self.command._builder_data['MOCK Leopard'] = self.command._builder_d ata['MOCK SnowLeopard'] = LayoutTestResults.results_from_string("""ADD_RESULTS({
714 "tests": {
715 "fast": {
716 "dom": {
717 "prototype-taco.html": {
718 "expected": "FAIL",
719 "actual": "PASS",
720 "is_unexpected": true
721 }
722 }
723 }
724 }
725 });""")
726 return self.command._builder_data
727
728 self.command.builder_data = builder_data
729
730 self.tool.filesystem.write_text_file(test_port.path_to_generic_test_expe ctations_file(), """
731 Bug(foo) fast/dom/prototype-taco.html [ Rebaseline ]
732 """)
733
734 self._write_test_file(test_port, 'fast/dom/prototype-taco.html', "Dummy test contents")
735
736 self.tool.executive = MockLineRemovingExecutive()
737
738 old_exact_matches = builders._exact_matches
739 try:
740 builders._exact_matches = {
741 "MOCK Leopard": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])},
742 "MOCK SnowLeopard": {"port_name": "test-mac-snowleopard", "speci fiers": set(["mock-specifier"])},
743 }
744
745 self.command.execute(self.options, [], self.tool)
746 self.assertEqual(self.tool.executive.calls, [])
747
748 # The mac ports should both be removed since they're the only ones i n builders._exact_matches.
749 self.assertEqual(self.tool.filesystem.read_text_file(test_port.path_ to_generic_test_expectations_file()), """
750 Bug(foo) [ Linux Win ] fast/dom/prototype-taco.html [ Rebaseline ]
751 """)
752 finally:
753 builders._exact_matches = old_exact_matches
754
668 755
669 class _FakeOptimizer(BaselineOptimizer): 756 class _FakeOptimizer(BaselineOptimizer):
670 def read_results_by_directory(self, baseline_name): 757 def read_results_by_directory(self, baseline_name):
671 if baseline_name.endswith('txt'): 758 if baseline_name.endswith('txt'):
672 return {'LayoutTests/passes/text.html': '123456'} 759 return {'LayoutTests/passes/text.html': '123456'}
673 return {} 760 return {}
674 761
675 762
676 class TestOptimizeBaselines(_BaseTestCase): 763 class TestOptimizeBaselines(_BaseTestCase):
677 command_constructor = OptimizeBaselines 764 command_constructor = OptimizeBaselines
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
926 crbug.com/24182 [ SnowLeopard ] fast/dom/prototype-strawberry.html [ NeedsRebase line ] 1013 crbug.com/24182 [ SnowLeopard ] fast/dom/prototype-strawberry.html [ NeedsRebase line ]
927 crbug.com/24182 fast/dom/prototype-chocolate.html [ NeedsRebaseline ] 1014 crbug.com/24182 fast/dom/prototype-chocolate.html [ NeedsRebaseline ]
928 crbug.com/24182 path/to/not-cycled-through-bots.html [ NeedsRebaseline ] 1015 crbug.com/24182 path/to/not-cycled-through-bots.html [ NeedsRebaseline ]
929 crbug.com/24182 path/to/locally-changed-lined.html [ NeedsRebaseline ] 1016 crbug.com/24182 path/to/locally-changed-lined.html [ NeedsRebaseline ]
930 """) 1017 """)
931 1018
932 self._write_test_file(test_port, 'fast/dom/prototype-taco.html', "Dummy test contents") 1019 self._write_test_file(test_port, 'fast/dom/prototype-taco.html', "Dummy test contents")
933 self._write_test_file(test_port, 'fast/dom/prototype-strawberry.html', " Dummy test contents") 1020 self._write_test_file(test_port, 'fast/dom/prototype-strawberry.html', " Dummy test contents")
934 self._write_test_file(test_port, 'fast/dom/prototype-chocolate.html', "D ummy test contents") 1021 self._write_test_file(test_port, 'fast/dom/prototype-chocolate.html', "D ummy test contents")
935 1022
1023 self.tool.executive = MockLineRemovingExecutive()
1024
936 old_exact_matches = builders._exact_matches 1025 old_exact_matches = builders._exact_matches
937 try: 1026 try:
938 builders._exact_matches = { 1027 builders._exact_matches = {
939 "MOCK Leopard": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])}, 1028 "MOCK Leopard": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])},
940 "MOCK SnowLeopard": {"port_name": "test-mac-snowleopard", "speci fiers": set(["mock-specifier"])}, 1029 "MOCK SnowLeopard": {"port_name": "test-mac-snowleopard", "speci fiers": set(["mock-specifier"])},
941 } 1030 }
942 1031
943 self.command.tree_status = lambda: 'closed' 1032 self.command.tree_status = lambda: 'closed'
944 self.command.execute(MockOptions(optimize=True, verbose=False, move_ overwritten_baselines=False, results_directory=False, log_server=None), [], self .tool) 1033 self.command.execute(MockOptions(optimize=True, verbose=False, move_ overwritten_baselines=False, results_directory=False, log_server=None), [], self .tool)
945 self.assertEqual(self.tool.executive.calls, []) 1034 self.assertEqual(self.tool.executive.calls, [])
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 test_port = self._setup_test_port() 1144 test_port = self._setup_test_port()
1056 1145
1057 old_builder_data = self.command.builder_data 1146 old_builder_data = self.command.builder_data
1058 1147
1059 def builder_data(): 1148 def builder_data():
1060 self.command._builder_data['MOCK Leopard'] = self.command._builder_d ata['MOCK SnowLeopard'] = LayoutTestResults.results_from_string("""ADD_RESULTS({ 1149 self.command._builder_data['MOCK Leopard'] = self.command._builder_d ata['MOCK SnowLeopard'] = LayoutTestResults.results_from_string("""ADD_RESULTS({
1061 "tests": { 1150 "tests": {
1062 "fast": { 1151 "fast": {
1063 "dom": { 1152 "dom": {
1064 "prototype-taco.html": { 1153 "prototype-taco.html": {
1065 "expected": "PASS", 1154 "expected": "FAIL",
1066 "actual": "PASS TEXT", 1155 "actual": "PASS",
1067 "is_unexpected": true 1156 "is_unexpected": true
1068 } 1157 }
1069 } 1158 }
1070 } 1159 }
1071 } 1160 }
1072 });""") 1161 });""")
1073 return self.command._builder_data 1162 return self.command._builder_data
1074 1163
1075 self.command.builder_data = builder_data 1164 self.command.builder_data = builder_data
1076 1165
1077 self.tool.filesystem.write_text_file(test_port.path_to_generic_test_expe ctations_file(), """ 1166 self.tool.filesystem.write_text_file(test_port.path_to_generic_test_expe ctations_file(), """
1078 Bug(foo) fast/dom/prototype-taco.html [ NeedsRebaseline ] 1167 Bug(foo) fast/dom/prototype-taco.html [ NeedsRebaseline ]
1079 """) 1168 """)
1080 1169
1081 self._write_test_file(test_port, 'fast/dom/prototype-taco.html', "Dummy test contents") 1170 self._write_test_file(test_port, 'fast/dom/prototype-taco.html', "Dummy test contents")
1082 1171
1172 self.tool.executive = MockLineRemovingExecutive()
1173
1083 old_exact_matches = builders._exact_matches 1174 old_exact_matches = builders._exact_matches
1084 try: 1175 try:
1085 builders._exact_matches = { 1176 builders._exact_matches = {
1086 "MOCK Leopard": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])}, 1177 "MOCK Leopard": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])},
1087 "MOCK SnowLeopard": {"port_name": "test-mac-snowleopard", "speci fiers": set(["mock-specifier"])}, 1178 "MOCK SnowLeopard": {"port_name": "test-mac-snowleopard", "speci fiers": set(["mock-specifier"])},
1088 } 1179 }
1089 1180
1090 self.command.tree_status = lambda: 'open' 1181 self.command.tree_status = lambda: 'open'
1091 self.command.execute(MockOptions(optimize=True, verbose=False, move_ overwritten_baselines=False, results_directory=False, log_server=None), [], self .tool) 1182 self.command.execute(MockOptions(optimize=True, verbose=False, move_ overwritten_baselines=False, results_directory=False, log_server=None), [], self .tool)
1092 self.assertEqual(self.tool.executive.calls, [ 1183 self.assertEqual(self.tool.executive.calls, [
1093 [ 1184 [['echo', 'optimize-baselines', '--no-modify-scm', '--suffixes', '', 'fast/dom/prototype-taco.html']],
1094 ['echo', 'copy-existing-baselines-internal', '--suffixes', ' txt', '--builder', 'MOCK Leopard', '--test', 'fast/dom/prototype-taco.html'],
1095 ['echo', 'copy-existing-baselines-internal', '--suffixes', ' txt', '--builder', 'MOCK SnowLeopard', '--test', 'fast/dom/prototype-taco.html'] ,
1096 ],
1097 [
1098 ['echo', 'rebaseline-test-internal', '--suffixes', 'txt', '- -builder', 'MOCK Leopard', '--test', 'fast/dom/prototype-taco.html'],
1099 ['echo', 'rebaseline-test-internal', '--suffixes', 'txt', '- -builder', 'MOCK SnowLeopard', '--test', 'fast/dom/prototype-taco.html'],
1100 ],
1101 [['echo', 'optimize-baselines', '--no-modify-scm', '--suffixes', 'txt', 'fast/dom/prototype-taco.html']],
1102 ['git', 'cl', 'upload', '-f'], 1185 ['git', 'cl', 'upload', '-f'],
1103 ['git', 'pull'], 1186 ['git', 'pull'],
1104 ['git', 'cl', 'dcommit', '-f'], 1187 ['git', 'cl', 'dcommit', '-f'],
1105 ['git', 'cl', 'set_close'], 1188 ['git', 'cl', 'set_close'],
1106 ]) 1189 ])
1107 1190
1108 # The mac ports should both be removed since they're the only ones i n builders._exact_matches. 1191 # The mac ports should both be removed since they're the only ones i n builders._exact_matches.
1109 self.assertEqual(self.tool.filesystem.read_text_file(test_port.path_ to_generic_test_expectations_file()), """ 1192 self.assertEqual(self.tool.filesystem.read_text_file(test_port.path_ to_generic_test_expectations_file()), """
1110 Bug(foo) [ Linux Win ] fast/dom/prototype-taco.html [ NeedsRebaseline ] 1193 Bug(foo) [ Linux Win ] fast/dom/prototype-taco.html [ NeedsRebaseline ]
1111 """) 1194 """)
1112 finally: 1195 finally:
1113 builders._exact_matches = old_exact_matches 1196 builders._exact_matches = old_exact_matches
OLDNEW
« no previous file with comments | « Tools/Scripts/webkitpy/tool/commands/rebaseline.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698