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

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

Issue 1154373005: Introduce WPTServe for running W3C Blink Layout tests (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix nits, refactor, license header update. Created 5 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 side-by-side diff with in-line comments
Download patch
Index: Tools/Scripts/webkitpy/layout_tests/port/base.py
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/base.py b/Tools/Scripts/webkitpy/layout_tests/port/base.py
index bb42fbc8aec149e07f712166ab3a6f7becea0213..574e736e44eebbd7bbed697d1948377323144ba4 100644
--- a/Tools/Scripts/webkitpy/layout_tests/port/base.py
+++ b/Tools/Scripts/webkitpy/layout_tests/port/base.py
@@ -65,6 +65,7 @@ from webkitpy.layout_tests.port import server_process
from webkitpy.layout_tests.port.factory import PortFactory
from webkitpy.layout_tests.servers import apache_http
from webkitpy.layout_tests.servers import pywebsocket
+from webkitpy.layout_tests.servers import wptserve_http
_log = logging.getLogger(__name__)
@@ -187,6 +188,8 @@ class Port(object):
self._helper = None
self._http_server = None
self._websocket_server = None
+ self._is_wpt_enabled = hasattr(options, 'enable_wptserve') and options.enable_wptserve
+ self._wpt_server = None
self._image_differ = None
self._server_process_constructor = server_process.ServerProcess # overridable for testing
self._http_lock = None # FIXME: Why does this live on the port object?
@@ -1163,6 +1166,35 @@ class Port(object):
server.start()
self._websocket_server = server
+ def set_is_wpt_enabled(self, is_wpt_enabled):
+ self._is_wpt_enabled = is_wpt_enabled
Dirk Pranke 2015/06/05 18:27:48 It doesn't seem like you need this, since it is se
burnik 2015/06/08 12:37:01 That's right. I wasn't sure if I would be able to
+
+ def is_wpt_enabled(self):
+ """Used as feature flag for WPT Serve feature."""
+ return self._is_wpt_enabled
+
+ def is_wpt_test(self, test):
+ """Whether this test is part of a web-platform-tests which require wptserve servers."""
+ return "web-platform-tests" in test
+
+ def start_wptserve(self):
+ """Start a WPT web server. Raise an error if it can't start or is already running.
+
+ Ports can stub this out if they don't need a WPT web server to be running."""
+ assert not self._wpt_server, 'Already running an http server.'
+ assert self.is_wpt_enabled(), 'Cannot start server if WPT is not enabled.'
+
+ # We currently don't support any output mechanism for the WPT server.
+ server = wptserve_http.WPTServeHTTP(self, self.results_directory())
+ server.start()
+ self._wpt_server = server
+
+ def stop_wptserve(self):
+ """Shut down the WPT server if it is running. Do nothing if it isn't."""
+ if self._wpt_server:
+ self._wpt_server.stop()
+ self._wpt_server = None
+
def http_server_supports_ipv6(self):
# Apache < 2.4 on win32 does not support IPv6, nor does cygwin apache.
if self.host.platform.is_cygwin() or self.host.platform.is_win():
@@ -1636,6 +1668,9 @@ class Port(object):
return False
if self._options.pixel_test_directories:
return any(test_input.test_name.startswith(directory) for directory in self._options.pixel_test_directories)
+ # TODO(burnik): Make sure this is the right way to do it.
+ if self.is_wpt_enabled() and self.is_wpt_test(test_input.test_name):
+ return False
return True
def _modules_to_search_for_symbols(self):

Powered by Google App Engine
This is Rietveld 408576698