| OLD | NEW |
| 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 optparse | 5 import optparse |
| 6 import unittest | 6 import unittest |
| 7 | 7 |
| 8 from webkitpy.common.net.buildbot import Build | 8 from webkitpy.common.net.buildbot import Build |
| 9 from webkitpy.common.net.layout_test_results import LayoutTestResults | 9 from webkitpy.common.net.layout_test_results import LayoutTestResults |
| 10 from webkitpy.common.system.executive_mock import MockExecutive | 10 from webkitpy.common.system.executive_mock import MockExecutive |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 | 110 |
| 111 def options(self, **kwargs): | 111 def options(self, **kwargs): |
| 112 options_dict = { | 112 options_dict = { |
| 113 'results_directory': None, | 113 'results_directory': None, |
| 114 'suffixes': 'txt', | 114 'suffixes': 'txt', |
| 115 'verbose': False, | 115 'verbose': False, |
| 116 } | 116 } |
| 117 options_dict.update(kwargs) | 117 options_dict.update(kwargs) |
| 118 return optparse.Values(options_dict) | 118 return optparse.Values(options_dict) |
| 119 | 119 |
| 120 def test_copy_baseline_mac(self): | 120 def baseline_path(self, path_from_layout_test_dir): |
| 121 port = self.tool.port_factory.get('test-mac-mac10.11') | 121 port = self.tool.port_factory.get() |
| 122 return self.tool.filesystem.join(port.layout_tests_dir(), path_from_layo
ut_test_dir) |
| 123 |
| 124 # The tests in this class all depend on the fall-back path graph |
| 125 # that is set up in |TestPort.FALLBACK_PATHS|. |
| 126 |
| 127 def test_copy_baseline_mac_newer_to_older_version(self): |
| 128 # The test-mac-mac10.11 baseline is copied over to the test-mac-mac10.10 |
| 129 # baseline directory because test-mac-mac10.10 is the "immediate |
| 130 # predecessor" in the fall-back graph. |
| 122 self._write( | 131 self._write( |
| 123 port.host.filesystem.join( | 132 self.baseline_path('platform/test-mac-mac10.11/failures/expected/ima
ge-expected.txt'), |
| 124 port.layout_tests_dir(), | 133 'original test-mac-mac10.11 result') |
| 125 'platform/test-mac-mac10.11/failures/expected/image-expected.txt
'), | |
| 126 'original mac10.11 result') | |
| 127 self.assertFalse(self.tool.filesystem.exists( | 134 self.assertFalse(self.tool.filesystem.exists( |
| 128 self.tool.filesystem.join( | 135 self.baseline_path('platform/test-mac-mac10.10/failures/expected/ima
ge-expected.txt'))) |
| 129 port.layout_tests_dir(), | |
| 130 'platform/test-mac-mac10.10/failures/expected/image-expected.txt
'))) | |
| 131 | 136 |
| 132 self.command.execute(self.options(builder='MOCK Mac10.11', test='failure
s/expected/image.html'), [], self.tool) | 137 self.command.execute(self.options(builder='MOCK Mac10.11', test='failure
s/expected/image.html'), [], self.tool) |
| 133 | 138 |
| 134 # The Mac 10.11 baseline is copied over to the Mac 10.10 directory, | |
| 135 # because Mac10.10 is the "immediate predecessor" in the fallback tree. | |
| 136 # That means that normally for Mac10.10 if there's no Mac10.10-specific | |
| 137 # baseline, then we fall back to the Mac10.11 baseline. | |
| 138 # The idea is, if in the next step we download new baselines for Mac10.1
1 | |
| 139 # but not Mac10.10, then mac10.10 will still have the correct baseline. | |
| 140 self.assertEqual( | 139 self.assertEqual( |
| 141 self._read(self.tool.filesystem.join( | 140 self._read(self.baseline_path('platform/test-mac-mac10.11/failures/e
xpected/image-expected.txt')), |
| 142 port.layout_tests_dir(), | 141 'original test-mac-mac10.11 result') |
| 143 'platform/test-mac-mac10.11/failures/expected/image-expected.txt
')), | |
| 144 'original mac10.11 result') | |
| 145 self.assertEqual( | 142 self.assertEqual( |
| 146 self._read(self.tool.filesystem.join( | 143 self._read(self.baseline_path('platform/test-mac-mac10.10/failures/e
xpected/image-expected.txt')), |
| 147 port.layout_tests_dir(), | 144 'original test-mac-mac10.11 result') |
| 148 'platform/test-mac-mac10.10/failures/expected/image-expected.txt
')), | |
| 149 'original mac10.11 result') | |
| 150 | 145 |
| 151 def test_copying_overwritten_baseline_to_multiple_locations(self): | 146 def test_copy_baseline_win10_to_linux_trusty_and_win7(self): |
| 152 self.tool.executive = MockExecutive() | 147 # The test-win-win10 baseline is copied over to the test-linux-trusty |
| 148 # and test-win-win7 baseline paths, since both of these are "immediate |
| 149 # predecessors". |
| 150 self._write( |
| 151 self.baseline_path('platform/test-win-win10/failures/expected/image-
expected.txt'), |
| 152 'original test-win-win10 result') |
| 153 self.assertFalse(self.tool.filesystem.exists( |
| 154 self.baseline_path('platform/test-linux-trusty/failures/expected/ima
ge-expected.txt'))) |
| 153 | 155 |
| 154 def test_copy_baseline_win7_to_linux_trusty(self): | 156 self.command.execute(self.options(builder='MOCK Win10', test='failures/e
xpected/image.html'), [], self.tool) |
| 155 port = self.tool.port_factory.get('test-win-win7') | |
| 156 self._write( | |
| 157 self.tool.filesystem.join( | |
| 158 port.layout_tests_dir(), | |
| 159 'platform/test-win-win7/failures/expected/image-expected.txt'), | |
| 160 'original win7 result') | |
| 161 self.assertFalse(self.tool.filesystem.exists( | |
| 162 self.tool.filesystem.join( | |
| 163 port.layout_tests_dir(), | |
| 164 'platform/test-linux-trusty/failures/expected/image-expected.txt
'))) | |
| 165 | 157 |
| 166 self.command.execute(self.options(builder='MOCK Win7', test='failures/ex
pected/image.html'), [], self.tool) | |
| 167 | |
| 168 # The Mac Win7 baseline is copied over to the Linux Trusty directory, | |
| 169 # because Linux Trusty is the baseline fallback "immediate predecessor"
of Win7. | |
| 170 self.assertEqual( | 158 self.assertEqual( |
| 171 self._read(self.tool.filesystem.join( | 159 self._read(self.baseline_path('platform/test-win-win10/failures/expe
cted/image-expected.txt')), |
| 172 port.layout_tests_dir(), | 160 'original test-win-win10 result') |
| 173 'platform/test-win-win7/failures/expected/image-expected.txt')), | |
| 174 'original win7 result') | |
| 175 self.assertEqual( | 161 self.assertEqual( |
| 176 self._read(self.tool.filesystem.join( | 162 self._read(self.baseline_path('platform/test-linux-trusty/failures/e
xpected/image-expected.txt')), |
| 177 port.layout_tests_dir(), | 163 'original test-win-win10 result') |
| 178 'platform/test-linux-trusty/failures/expected/image-expected.txt
')), | 164 self.assertEqual( |
| 179 'original win7 result') | 165 self._read(self.baseline_path('platform/test-linux-trusty/failures/e
xpected/image-expected.txt')), |
| 166 'original test-win-win10 result') |
| 180 | 167 |
| 181 def test_no_copy_existing_baseline(self): | 168 def test_no_copy_existing_baseline(self): |
| 182 port = self.tool.port_factory.get('test-win-win7') | 169 # If a baseline exists already for an "immediate prdecessor" baseline |
| 170 # directory, (e.g. test-linux-trusty), then no "immediate successor" |
| 171 # baselines (e.g. test-win-win10) are copied over. |
| 183 self._write( | 172 self._write( |
| 184 self.tool.filesystem.join( | 173 self.baseline_path('platform/test-win-win10/failures/expected/image-
expected.txt'), |
| 185 port.layout_tests_dir(), | 174 'original test-win-win10 result') |
| 186 'platform/test-win-win7/failures/expected/image-expected.txt'), | |
| 187 'original win7 result') | |
| 188 self._write( | 175 self._write( |
| 189 self.tool.filesystem.join( | 176 self.baseline_path('platform/test-linux-trusty/failures/expected/ima
ge-expected.txt'), |
| 190 port.layout_tests_dir(), | 177 'original test-linux-trusty result') |
| 191 'platform/test-linux-trusty/failures/expected/image-expected.txt
'), | |
| 192 'original linux trusty result') | |
| 193 | 178 |
| 194 self.command.execute(self.options(builder='MOCK Win7', test='failures/ex
pected/image.html'), [], self.tool) | 179 self.command.execute(self.options(builder='MOCK Win10', test='failures/e
xpected/image.html'), [], self.tool) |
| 195 | 180 |
| 196 # Since a baseline existed already for Linux Trusty, the Win7 baseline i
s not copied over. | |
| 197 self.assertEqual( | 181 self.assertEqual( |
| 198 self._read(self.tool.filesystem.join( | 182 self._read(self.baseline_path('platform/test-win-win10/failures/expe
cted/image-expected.txt')), |
| 199 port.layout_tests_dir(), | 183 'original test-win-win10 result') |
| 200 'platform/test-win-win7/failures/expected/image-expected.txt')), | |
| 201 'original win7 result') | |
| 202 self.assertEqual( | 184 self.assertEqual( |
| 203 self._read(self.tool.filesystem.join( | 185 self._read(self.baseline_path('platform/test-linux-trusty/failures/e
xpected/image-expected.txt')), |
| 204 port.layout_tests_dir(), | 186 'original test-linux-trusty result') |
| 205 'platform/test-linux-trusty/failures/expected/image-expected.txt
')), | |
| 206 'original linux trusty result') | |
| 207 | 187 |
| 208 def test_no_copy_skipped_test(self): | 188 def test_no_copy_skipped_test(self): |
| 209 port = self.tool.port_factory.get('test-win-win7') | 189 # If a test is skipped on some platform, no baselines are copied over |
| 190 # to that directory. In this example, the test is skipped on linux, |
| 191 # so the test-win-win10 baseline is not copied over. |
| 192 port = self.tool.port_factory.get('test-win-win10') |
| 210 self._write( | 193 self._write( |
| 211 self.tool.filesystem.join( | 194 self.baseline_path('platform/test-win-win10/failures/expected/image-
expected.txt'), |
| 212 port.layout_tests_dir(), | 195 'original test-win-win10 result') |
| 213 'platform/test-win-win7/failures/expected/image-expected.txt'), | |
| 214 'original win7 result') | |
| 215 self._write( | 196 self._write( |
| 216 port.path_to_generic_test_expectations_file(), | 197 port.path_to_generic_test_expectations_file(), |
| 217 ("[ Win ] failures/expected/image.html [ Failure ]\n" | 198 ("[ Win ] failures/expected/image.html [ Failure ]\n" |
| 218 "[ Linux ] failures/expected/image.html [ Skip ]\n")) | 199 "[ Linux ] failures/expected/image.html [ Skip ]\n")) |
| 219 | 200 |
| 220 self.command.execute(self.options(builder='MOCK Win7', test='failures/ex
pected/image.html'), [], self.tool) | 201 self.command.execute(self.options(builder='MOCK Win10', test='failures/e
xpected/image.html'), [], self.tool) |
| 221 | 202 |
| 222 # The Win7 baseline is not copied over to the Linux Trusty directory | |
| 223 # because the test is skipped on linux. | |
| 224 self.assertFalse( | 203 self.assertFalse( |
| 225 self.tool.filesystem.exists(self.tool.filesystem.join( | 204 self.tool.filesystem.exists(self.baseline_path('platform/test-linux-
trusty/failures/expected/image-expected.txt'))) |
| 226 port.layout_tests_dir(), | 205 |
| 227 'platform/test-linux-trusty/failures/expected/image-expected.txt
'))) | 206 def test_port_for_primary_baseline(self): |
| 207 self.assertEqual(self.command._port_for_primary_baseline('test-linux-tru
sty').name(), 'test-linux-trusty') |
| 208 self.assertEqual(self.command._port_for_primary_baseline('test-mac-mac10
.11').name(), 'test-mac-mac10.11') |
| 209 |
| 210 def test_port_for_primary_baseline_not_found(self): |
| 211 with self.assertRaises(Exception): |
| 212 self.command._port_for_primary_baseline('test-foo-foo4.7') |
| 228 | 213 |
| 229 | 214 |
| 230 class TestRebaselineTest(BaseTestCase): | 215 class TestRebaselineTest(BaseTestCase): |
| 231 command_constructor = RebaselineTest # AKA webkit-patch rebaseline-test-int
ernal | 216 command_constructor = RebaselineTest # AKA webkit-patch rebaseline-test-int
ernal |
| 232 | 217 |
| 233 def setUp(self): | 218 def setUp(self): |
| 234 super(TestRebaselineTest, self).setUp() | 219 super(TestRebaselineTest, self).setUp() |
| 235 | 220 |
| 236 @staticmethod | 221 @staticmethod |
| 237 def options(**kwargs): | 222 def options(**kwargs): |
| (...skipping 704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 942 for cmd_line, cwd in commands: | 927 for cmd_line, cwd in commands: |
| 943 out = self.run_command(cmd_line, cwd=cwd) | 928 out = self.run_command(cmd_line, cwd=cwd) |
| 944 if 'rebaseline-test-internal' in cmd_line: | 929 if 'rebaseline-test-internal' in cmd_line: |
| 945 out = '{"remove-lines": [{"test": "%s", "builder": "%s"}]}\n' %
(cmd_line[8], cmd_line[6]) | 930 out = '{"remove-lines": [{"test": "%s", "builder": "%s"}]}\n' %
(cmd_line[8], cmd_line[6]) |
| 946 command_outputs.append([0, out, '']) | 931 command_outputs.append([0, out, '']) |
| 947 | 932 |
| 948 new_calls = self.calls[num_previous_calls:] | 933 new_calls = self.calls[num_previous_calls:] |
| 949 self.calls = self.calls[:num_previous_calls] | 934 self.calls = self.calls[:num_previous_calls] |
| 950 self.calls.append(new_calls) | 935 self.calls.append(new_calls) |
| 951 return command_outputs | 936 return command_outputs |
| OLD | NEW |