Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py (275887 => 275888)
--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py 2021-04-13 16:36:37 UTC (rev 275887)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py 2021-04-13 16:47:53 UTC (rev 275888)
@@ -80,6 +80,12 @@
self._filesystem = self._port.host.filesystem
self.LAYOUT_TESTS_DIRECTORY = 'LayoutTests'
self._w3c_resource_files = None
+ self.http_subdir = 'http' + port.TEST_PATH_SEPARATOR + 'test'
+ self.websocket_subdir = 'websocket' + port.TEST_PATH_SEPARATOR
+ self.web_platform_test_subdir = port.web_platform_test_server_doc_root()
+ self.webkit_specific_web_platform_test_subdir = (
+ 'http' + port.TEST_PATH_SEPARATOR + 'wpt' + port.TEST_PATH_SEPARATOR
+ )
def find_tests(self, options, args, device_type=None):
paths = self._strip_test_dir_prefixes(args)
@@ -91,7 +97,18 @@
def find_tests_by_path(self, paths, device_type=None):
"""Return the list of tests found. Both generic and platform-specific tests matching paths should be returned."""
expanded_paths = self._expanded_paths(paths, device_type=device_type)
- return [Test(test_file) for test_file in self._real_tests(expanded_paths)]
+ return [
+ Test(
+ test_file,
+ is_http_test=self.http_subdir in test_file,
+ is_websocket_test=self.websocket_subdir in test_file,
+ is_wpt_test=(
+ self.web_platform_test_subdir in test_file
+ or self.webkit_specific_web_platform_test_subdir in test_file
+ ),
+ )
+ for test_file in self._real_tests(expanded_paths)
+ ]
def _expanded_paths(self, paths, device_type=None):
expanded_paths = []
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py (275887 => 275888)
--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py 2021-04-13 16:36:37 UTC (rev 275887)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py 2021-04-13 16:47:53 UTC (rev 275888)
@@ -82,10 +82,6 @@
self._options = options
self._printer = printer
self._expectations = OrderedDict()
- self.HTTP_SUBDIR = 'http' + port.TEST_PATH_SEPARATOR + 'test'
- self.WEBSOCKET_SUBDIR = 'websocket' + port.TEST_PATH_SEPARATOR
- self.web_platform_test_subdir = self._port.web_platform_test_server_doc_root()
- self.webkit_specific_web_platform_test_subdir = 'http' + port.TEST_PATH_SEPARATOR + 'wpt' + port.TEST_PATH_SEPARATOR
self.LAYOUT_TESTS_DIRECTORY = 'LayoutTests'
self._results_directory = self._port.results_directory()
self._finder = LayoutTestFinder(self._port, self._options)
@@ -123,18 +119,6 @@
return tests_to_run_by_device, aggregate_tests_to_skip
- def _is_http_test(self, test):
- return self.HTTP_SUBDIR in test or self._is_websocket_test(test) or self._needs_web_platform_test(test)
-
- def _is_websocket_test(self, test):
- return self.WEBSOCKET_SUBDIR in test
-
- def _needs_web_platform_test(self, test):
- return self.web_platform_test_subdir in test or self.webkit_specific_web_platform_test_subdir in test
-
- def _http_tests(self, test_names):
- return set(test for test in test_names if self._is_http_test(test))
-
def _skip_tests(self, all_tests_list, expectations, http_tests):
all_tests = set(all_tests_list)
@@ -215,7 +199,9 @@
def _tests_to_run(self, tests, device_type):
test_names = {test.test_path for test in tests}
- test_names_to_skip = self._skip_tests(test_names, self._expectations[device_type], self._http_tests(test_names))
+ test_names_to_skip = self._skip_tests(test_names,
+ self._expectations[device_type],
+ {test.test_path for test in tests if test.needs_any_server})
tests_to_run = [test for test in tests if test.test_path not in test_names_to_skip]
# Create a sorted list of test files so the subset chunk,
@@ -232,7 +218,7 @@
return TestInput(
test_file,
self._options.slow_time_out_ms if self._test_is_slow(test_file.test_path, device_type=device_type) else self._options.time_out_ms,
- self._is_http_test(test_file.test_path),
+ test_file.needs_any_server,
should_dump_jsconsolelog_in_stderr=self._test_should_dump_jsconsolelog_in_stderr(test_file.test_path, device_type=device_type))
def _test_is_slow(self, test_file, device_type):
@@ -243,9 +229,6 @@
def _test_should_dump_jsconsolelog_in_stderr(self, test_file, device_type):
return self._expectations[device_type].model().has_modifier(test_file, test_expectations.DUMPJSCONSOLELOGINSTDERR)
- def needs_servers(self, test_names):
- return any(self._is_http_test(test_name) for test_name in test_names) and self._options.http
-
def _get_test_inputs(self, tests_to_run, repeat_each, iterations, device_type):
test_inputs = []
for _ in range(iterations):
@@ -337,9 +320,9 @@
# Create the output directory if it doesn't already exist.
self._port.host.filesystem.maybe_make_directory(self._results_directory)
- needs_http = any((self._is_http_test(test.test_path) and not self._needs_web_platform_test(test.test_path)) for tests in itervalues(tests_to_run_by_device) for test in tests)
- needs_web_platform_test_server = any(self._needs_web_platform_test(test.test_path) for tests in itervalues(tests_to_run_by_device) for test in tests)
- needs_websockets = any(self._is_websocket_test(test.test_path) for tests in itervalues(tests_to_run_by_device) for test in tests)
+ needs_http = any(test.needs_http_server for tests in itervalues(tests_to_run_by_device) for test in tests)
+ needs_web_platform_test_server = any(test.needs_wpt_server for tests in itervalues(tests_to_run_by_device) for test in tests)
+ needs_websockets = any(test.needs_websocket_server for tests in itervalues(tests_to_run_by_device) for test in tests)
self._runner = LayoutTestRunner(self._options, self._port, self._printer, self._results_directory, self._test_is_slow,
needs_http=needs_http, needs_web_platform_test_server=needs_web_platform_test_server, needs_websockets=needs_websockets)
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py (275887 => 275888)
--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py 2021-04-13 16:36:37 UTC (rev 275887)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py 2021-04-13 16:47:53 UTC (rev 275888)
@@ -29,7 +29,6 @@
"""Unit tests for manager.py."""
-import sys
import time
import unittest
@@ -44,53 +43,6 @@
class ManagerTest(unittest.TestCase):
- def test_needs_servers(self):
- def get_wpt_doc_root():
- return 'imported/w3c/wpt'
-
- def get_manager():
- host = MockHost()
- port = host.port_factory.get()
- port.TEST_PATH_SEPARATOR = '/'
- port.web_platform_test_server_doc_root = get_wpt_doc_root
- manager = Manager(port, options=MockOptions(http=True), printer=Mock())
- return manager
-
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['fast/html']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http/tests/misc']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['imported/w3c/wpt/test']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http/wpt/funky']))
-
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['imported/w3c']))
-
- def integration_test_needs_servers(self):
- def get_manager():
- host = MockHost()
- port = host.port_factory.get()
- manager = Manager(port, options=MockOptions(test_list=None, http=True), printer=Mock())
- return manager
-
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['fast/html']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http/tests/mime']))
-
- if sys.platform.startswith('win'):
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['fast\\html']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http\\tests\\mime']))
-
def test_look_for_new_crash_logs(self):
def get_manager():
host = MockHost()
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test.py (275887 => 275888)
--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test.py 2021-04-13 16:36:37 UTC (rev 275887)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test.py 2021-04-13 16:47:53 UTC (rev 275888)
@@ -41,3 +41,22 @@
expected_checksum_path = attr.ib(default=None, type=str)
expected_audio_path = attr.ib(default=None, type=str)
reference_files = attr.ib(default=None, type=list)
+ is_http_test = attr.ib(default=None, type=bool)
+ is_websocket_test = attr.ib(default=None, type=bool)
+ is_wpt_test = attr.ib(default=None, type=bool)
+
+ @property
+ def needs_http_server(self):
+ return self.is_http_test or self.is_websocket_test
+
+ @property
+ def needs_websocket_server(self):
+ return self.is_websocket_test
+
+ @property
+ def needs_wpt_server(self):
+ return self.is_wpt_test
+
+ @property
+ def needs_any_server(self):
+ return self.needs_http_server or self.needs_websocket_server or self.needs_wpt_server