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

Unified Diff: Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py

Issue 23889025: Make mock_drt functional and add optional secondary 'actual' directory. (Closed) Base URL: svn://svn.chromium.org/blink/trunk/
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py
===================================================================
--- Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py (revision 157479)
+++ Tools/Scripts/webkitpy/layout_tests/port/mock_drt.py (working copy)
@@ -41,6 +41,7 @@
import optparse
import os
import sys
+import types
# Since we execute this script directly as part of the unit tests, we need to ensure
# that Tools/Scripts is in sys.path for the next imports to work correctly.
@@ -48,6 +49,7 @@
if script_dir not in sys.path:
sys.path.append(script_dir)
+from webkitpy.common import read_checksum_from_png
from webkitpy.common.system.systemhost import SystemHost
from webkitpy.layout_tests.port.driver import DriverInput, DriverOutput
from webkitpy.layout_tests.port.factory import PortFactory
@@ -64,6 +66,8 @@
def __init__(self, host, port_name, **kwargs):
self.__delegate = PortFactory(host).get(port_name.replace('mock-', ''), **kwargs)
+ self.__delegate_driver_class = self.__delegate._driver_class
+ self.__delegate._driver_class = types.MethodType(self._driver_class, self.__delegate)
def __getattr__(self, name):
return getattr(self.__delegate, name)
@@ -74,18 +78,17 @@
def check_sys_deps(self, needs_http):
return True
- def _driver_class(self):
+ def _driver_class(self, delegate):
return self._mocked_driver_maker
- @staticmethod
- def _mocked_driver_maker(port, worker_number, pixel_tests, no_timeout=False):
- path_to_this_file = port.host.filesystem.abspath(__file__.replace('.pyc', '.py'))
- driver = port.__delegate._driver_class()(port, worker_number, pixel_tests, no_timeout)
- driver.cmd_line = port._overriding_cmd_line(driver.cmd_line,
- port.__delegate._path_to_driver(),
+ def _mocked_driver_maker(self, port, worker_number, pixel_tests, no_timeout=False):
+ path_to_this_file = self.host.filesystem.abspath(__file__.replace('.pyc', '.py'))
+ driver = self.__delegate_driver_class()(self, worker_number, pixel_tests, no_timeout)
+ driver.cmd_line = self._overriding_cmd_line(driver.cmd_line,
+ self.__delegate._path_to_driver(),
sys.executable,
path_to_this_file,
- port.__delegate.name())
+ self.__delegate.name())
return driver
@staticmethod
@@ -152,6 +155,11 @@
platform_index = argv.index('--platform')
platform = argv[platform_index + 1]
+ actual_directory = None
+ if '--actual-directory' in argv:
+ actual_directory_index = argv.index('--actual-directory')
+ actual_directory = argv[actual_directory_index + 1]
+
pixel_tests = False
pixel_path = None
test_shell = '--test-shell' in argv
@@ -162,7 +170,11 @@
pixel_path = arg[len('--pixel-tests='):]
else:
pixel_tests = '--pixel-tests' in argv
- options = optparse.Values({'test_shell': test_shell, 'platform': platform, 'pixel_tests': pixel_tests, 'pixel_path': pixel_path})
+ options = optparse.Values({'test_shell': test_shell,
+ 'platform': platform,
+ 'pixel_tests': pixel_tests,
+ 'pixel_path': pixel_path,
+ 'actual_directory': actual_directory})
return (options, argv)
@@ -195,12 +207,10 @@
def input_from_line(self, line):
vals = line.strip().split("'")
- if len(vals) == 1:
- uri = vals[0]
- checksum = None
- else:
- uri = vals[0]
- checksum = vals[1]
+ uri = vals[0]
+ checksum = None
+ if len(vals) >= 3:
+ checksum = vals[2]
if uri.startswith('http://') or uri.startswith('https://'):
test_name = self._driver.uri_to_test(uri)
else:
@@ -227,6 +237,21 @@
actual_checksum = port.expected_checksum(test_input.test_name)
actual_image = port.expected_image(test_input.test_name)
+ if self._options.actual_directory:
+ actual_path = port._filesystem.join(self._options.actual_directory, test_input.test_name)
+ root, _ = port._filesystem.splitext(actual_path)
+ text_path = root + '-actual.txt'
+ if port._filesystem.exists(text_path):
+ actual_text = port._filesystem.read_binary_file(text_path)
+ audio_path = root + '-actual.wav'
+ if port._filesystem.exists(audio_path):
+ actual_audio = port._filesystem.read_binary_file(audio_path)
+ image_path = root + '-actual.png'
+ if port._filesystem.exists(image_path):
+ actual_image = port._filesystem.read_binary_file(image_path)
+ with port._filesystem.open_binary_file_for_reading(image_path) as filehandle:
+ actual_checksum = read_checksum_from_png.read_checksum(filehandle)
+
return DriverOutput(actual_text, actual_image, actual_checksum, actual_audio)
def write_test_output(self, test_input, output, is_reftest):
@@ -243,7 +268,7 @@
self._stdout.write('#EOF\n')
- if self._options.pixel_tests and output.image_hash:
+ if self._options.pixel_tests and output.image_hash or is_reftest:
self._stdout.write('\n')
self._stdout.write('ActualHash: %s\n' % output.image_hash)
self._stdout.write('ExpectedHash: %s\n' % test_input.image_hash)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698