Title: [244701] trunk/Tools
Revision
244701
Author
[email protected]
Date
2019-04-26 11:25:28 -0700 (Fri, 26 Apr 2019)

Log Message

webkitpy: Running a single test will always use the default device
https://bugs.webkit.org/show_bug.cgi?id=195472
<rdar://problem/48724825>

Reviewed by Lucas Forschler.

It makes more sense to have the Manager class handle the case where a user specifically requests a test which is
skipped on the current configuration. This changes the behavior when running part of a test shard, now tests explicitly
requested will be run regardless of what shard they are in.

* Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
(LayoutTestFinder.skip_tests): Caller should manage running skipped tests which were explicitly requested.
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager.run): If a test is marked as skipped for the configuration, but was specifically requested, run it anyways
on the default device type.
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(RunTest.test_run_chunk): Explicitly requesting a test will override sharing behavior.
(RunTest.test_run_part): Ditto.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (244700 => 244701)


--- trunk/Tools/ChangeLog	2019-04-26 18:10:17 UTC (rev 244700)
+++ trunk/Tools/ChangeLog	2019-04-26 18:25:28 UTC (rev 244701)
@@ -1,3 +1,24 @@
+2019-04-26  Jonathan Bedard  <[email protected]>
+
+        webkitpy: Running a single test will always use the default device
+        https://bugs.webkit.org/show_bug.cgi?id=195472
+        <rdar://problem/48724825>
+
+        Reviewed by Lucas Forschler.
+
+        It makes more sense to have the Manager class handle the case where a user specifically requests a test which is
+        skipped on the current configuration. This changes the behavior when running part of a test shard, now tests explicitly
+        requested will be run regardless of what shard they are in.
+
+        * Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
+        (LayoutTestFinder.skip_tests): Caller should manage running skipped tests which were explicitly requested.
+        * Scripts/webkitpy/layout_tests/controllers/manager.py:
+        (Manager.run): If a test is marked as skipped for the configuration, but was specifically requested, run it anyways
+        on the default device type.
+        * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
+        (RunTest.test_run_chunk): Explicitly requesting a test will override sharing behavior.
+        (RunTest.test_run_part): Ditto.
+
 2019-04-26  Alex Christensen  <[email protected]>
 
         Add ENABLE(CONTENT_EXTENSIONS) and namespace ContentExtensions to ResourceLoadInfo.h

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py (244700 => 244701)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py	2019-04-26 18:10:17 UTC (rev 244700)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py	2019-04-26 18:25:28 UTC (rev 244701)
@@ -130,9 +130,6 @@
             tests_to_skip = all_tests - tests_to_skip
         elif self._options.skipped == 'ignore':
             tests_to_skip = set()
-        elif self._options.skipped != 'always':
-            # make sure we're explicitly running any tests passed on the command line; equivalent to 'default'.
-            tests_to_skip -= set(paths)
 
         # unless of course we don't want to run the HTTP tests :)
         if not self._options.http:

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py (244700 => 244701)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py	2019-04-26 18:10:17 UTC (rev 244700)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py	2019-04-26 18:25:28 UTC (rev 244701)
@@ -205,6 +205,13 @@
             tests_to_run_by_device[device_type] = [test for test in tests_to_run if test not in aggregate_tests]
             aggregate_tests.update(tests_to_run)
 
+        # If a test is marked skipped, but was explicitly requested, run it anyways
+        if self._options.skipped != 'always':
+            for arg in args:
+                if arg in total_tests and arg not in aggregate_tests:
+                    tests_to_run_by_device[device_type_list[0]].append(arg)
+                    aggregate_tests.add(arg)
+
         tests_to_skip = total_tests - aggregate_tests
         self._printer.print_found(len(aggregate_test_names), len(aggregate_tests), self._options.repeat_each, self._options.iterations)
         start_time = time.time()

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py (244700 => 244701)


--- trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py	2019-04-26 18:10:17 UTC (rev 244700)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py	2019-04-26 18:25:28 UTC (rev 244701)
@@ -385,7 +385,7 @@
 
         # Test that we wrap around if the number of tests is not evenly divisible by the chunk size
         tests_to_run = ['passes/error.html', 'passes/image.html', 'passes/platform_image.html', 'passes/text.html']
-        chunk_tests_run = get_tests_run(['--run-chunk', '1:3'] + tests_to_run)
+        chunk_tests_run = get_tests_run(['--run-chunk', '1:3', '--skipped', 'always'] + tests_to_run)
         self.assertEqual(['passes/text.html', 'passes/error.html', 'passes/image.html'], chunk_tests_run)
 
     def test_run_force(self):
@@ -397,13 +397,13 @@
     def test_run_part(self):
         # Test that we actually select the right part
         tests_to_run = ['passes/error.html', 'passes/image.html', 'passes/platform_image.html', 'passes/text.html']
-        tests_run = get_tests_run(['--run-part', '1:2'] + tests_to_run)
+        tests_run = get_tests_run(['--run-part', '1:2', '--skipped', 'always'] + tests_to_run)
         self.assertEqual(['passes/error.html', 'passes/image.html'], tests_run)
 
         # Test that we wrap around if the number of tests is not evenly divisible by the chunk size
         # (here we end up with 3 parts, each with 2 tests, and we only have 4 tests total, so the
         # last part repeats the first two tests).
-        chunk_tests_run = get_tests_run(['--run-part', '3:3'] + tests_to_run)
+        chunk_tests_run = get_tests_run(['--run-part', '3:3', '--skipped', 'always'] + tests_to_run)
         self.assertEqual(['passes/error.html', 'passes/image.html'], chunk_tests_run)
 
     def test_run_singly(self):
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to