Index: Tools/Scripts/webkitpy/layout_tests/port/driver.py |
diff --git a/Tools/Scripts/webkitpy/layout_tests/port/driver.py b/Tools/Scripts/webkitpy/layout_tests/port/driver.py |
index b8199ae030c949e01b9d2e650630013e9ab47a54..3fd0e6ca577c7a571f83a20b9e488b98b1bc8ecc 100644 |
--- a/Tools/Scripts/webkitpy/layout_tests/port/driver.py |
+++ b/Tools/Scripts/webkitpy/layout_tests/port/driver.py |
@@ -223,10 +223,21 @@ class Driver(object): |
HTTP_DIR = "http/tests/" |
HTTP_LOCAL_DIR = "http/tests/local/" |
+ WPT_DIR = "imported/web-platform-tests/" |
def is_http_test(self, test_name): |
return test_name.startswith(self.HTTP_DIR) and not test_name.startswith(self.HTTP_LOCAL_DIR) |
+ def _should_treat_as_wpt_test(self, test_name): |
+ return self._port.is_wpt_enabled() and self._port.is_wpt_test(test_name) |
+ |
+ def _get_http_host_and_ports_for_test(self, test_name): |
+ if self._should_treat_as_wpt_test(test_name): |
+ # TODO(burnik): Read from config or args. |
+ return ("web-platform.test", 8001, 8444) |
+ else: |
+ return ("127.0.0.1", 8000, 8443) |
+ |
def test_to_uri(self, test_name): |
"""Convert a test name to a URI. |
@@ -235,14 +246,22 @@ class Driver(object): |
their name (e.g. 'http/tests/security/mixedContent/test1.https.html') will |
be loaded over HTTPS; all other tests over HTTP. |
""" |
- if not self.is_http_test(test_name): |
+ is_wpt_test = self._should_treat_as_wpt_test(test_name) |
+ |
+ if not self.is_http_test(test_name) and not is_wpt_test: |
return path.abspath_to_uri(self._port.host.platform, self._port.abspath_for_test(test_name)) |
- relative_path = test_name[len(self.HTTP_DIR):] |
+ if is_wpt_test: |
+ test_dir_prefix = self.WPT_DIR |
+ else: |
+ test_dir_prefix = self.HTTP_DIR |
+ |
+ relative_path = test_name[len(test_dir_prefix):] |
+ hostname, insecure_port, secure_port = self._get_http_host_and_ports_for_test(test_name) |
if "/https/" in test_name or ".https." in test_name: |
- return "https://127.0.0.1:8443/" + relative_path |
- return "http://127.0.0.1:8000/" + relative_path |
+ return "https://%s:%d/%s" % (hostname, secure_port, relative_path) |
+ return "http://%s:%d/%s" % (hostname, insecure_port, relative_path) |
def uri_to_test(self, uri): |
"""Return the base layout test name for a given URI. |
@@ -252,15 +271,19 @@ class Driver(object): |
"fast/html/keygen.html". |
""" |
+ |
+ # This looks like a bit of a hack, since the uri is used instead of test name. |
+ hostname, insecure_port, secure_port = self._get_http_host_and_ports_for_test(uri) |
+ |
if uri.startswith("file:///"): |
prefix = path.abspath_to_uri(self._port.host.platform, self._port.layout_tests_dir()) |
if not prefix.endswith('/'): |
prefix += '/' |
return uri[len(prefix):] |
if uri.startswith("http://"): |
- return uri.replace('http://127.0.0.1:8000/', self.HTTP_DIR) |
+ return uri.replace('http://%s:%d/' % (hostname, insecure_port), self.HTTP_DIR) |
if uri.startswith("https://"): |
- return uri.replace('https://127.0.0.1:8443/', self.HTTP_DIR) |
+ return uri.replace('https://%s:%d/' % (hostname, secure_port), self.HTTP_DIR) |
raise NotImplementedError('unknown url type: %s' % uri) |
def has_crashed(self): |
@@ -388,7 +411,7 @@ class Driver(object): |
# FIXME: performance tests pass in full URLs instead of test names. |
if driver_input.test_name.startswith('http://') or driver_input.test_name.startswith('https://') or driver_input.test_name == ('about:blank'): |
command = driver_input.test_name |
- elif self.is_http_test(driver_input.test_name): |
+ elif self.is_http_test(driver_input.test_name) or self._should_treat_as_wpt_test(driver_input.test_name): |
command = self.test_to_uri(driver_input.test_name) |
else: |
command = self._port.abspath_for_test(driver_input.test_name) |