Title: [275888] trunk/Tools
Revision
275888
Author
[email protected]
Date
2021-04-13 09:47:53 -0700 (Tue, 13 Apr 2021)

Log Message

Test objects should know if they need servers
https://bugs.webkit.org/show_bug.cgi?id=224442

Reviewed by Jonathan Bedard.

This also removes the unused Manager.needs_servers

* Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
(LayoutTestFinder.__init__): Move known paths from Manager.__init__
(LayoutTestFinder.find_tests_by_path):
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager.__init__):
(Manager._is_http_test): Deleted.
(Manager._is_websocket_test): Deleted.
(Manager._needs_web_platform_test): Deleted.
(Manager._http_tests): Deleted.
(Manager._tests_to_run):
(Manager._test_input_for_file):
(Manager.needs_servers): Deleted.
(Manager.run):
* Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
(ManagerTest.test_needs_servers): Deleted.
(ManagerTest.integration_test_needs_servers): Deleted.
* Scripts/webkitpy/layout_tests/models/test.py:
(Test):
(Test.needs_http_server):
(Test.needs_websocket_server):
(Test.needs_wpt_server):
(Test.needs_any_server):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (275887 => 275888)


--- trunk/Tools/ChangeLog	2021-04-13 16:36:37 UTC (rev 275887)
+++ trunk/Tools/ChangeLog	2021-04-13 16:47:53 UTC (rev 275888)
@@ -1,3 +1,35 @@
+2021-04-13  Sam Sneddon  <[email protected]>
+
+        Test objects should know if they need servers
+        https://bugs.webkit.org/show_bug.cgi?id=224442
+
+        Reviewed by Jonathan Bedard.
+
+        This also removes the unused Manager.needs_servers
+
+        * Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
+        (LayoutTestFinder.__init__): Move known paths from Manager.__init__
+        (LayoutTestFinder.find_tests_by_path):
+        * Scripts/webkitpy/layout_tests/controllers/manager.py:
+        (Manager.__init__):
+        (Manager._is_http_test): Deleted.
+        (Manager._is_websocket_test): Deleted.
+        (Manager._needs_web_platform_test): Deleted.
+        (Manager._http_tests): Deleted.
+        (Manager._tests_to_run):
+        (Manager._test_input_for_file):
+        (Manager.needs_servers): Deleted.
+        (Manager.run):
+        * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
+        (ManagerTest.test_needs_servers): Deleted.
+        (ManagerTest.integration_test_needs_servers): Deleted.
+        * Scripts/webkitpy/layout_tests/models/test.py:
+        (Test):
+        (Test.needs_http_server):
+        (Test.needs_websocket_server):
+        (Test.needs_wpt_server):
+        (Test.needs_any_server):
+
 2021-04-13  Chris Dumez  <[email protected]>
 
         The GPUProcess should only launch when it is needed

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to