[webkit-changes] [WebKit/WebKit] bee9fa: Rewrite LayoutTestFinder, making it own finding ex...

Sam Sneddon noreply at github.com
Thu Mar 14 17:27:15 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bee9faa82faa4c52bc1c75dbc2f98b02c9d3f3a4
      https://github.com/WebKit/WebKit/commit/bee9faa82faa4c52bc1c75dbc2f98b02c9d3f3a4
  Author: Sam Sneddon <gsnedders at apple.com>
  Date:   2024-03-14 (Thu, 14 Mar 2024)

  Changed paths:
    M Tools/Scripts/webkitpy/common/system/filesystem.py
    M Tools/Scripts/webkitpy/common/system/filesystem_mock.py
    A Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py
    M Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder_legacy.py
    M Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder_legacy_unittest.py
    A Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder_unittest.py
    M Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
    M Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py
    M Tools/Scripts/webkitpy/port/test.py
    M Tools/Scripts/webkitpy/test/main.py
    M Tools/Scripts/webkitpy/w3c/test_importer_unittest.py

  Log Message:
  -----------
  Rewrite LayoutTestFinder, making it own finding expectations
https://bugs.webkit.org/show_bug.cgi?id=220421
rdar://problem/72894403

Reviewed by Jonathan Bedard.

Previously we have relied on the test runner to probe for expectation
files; this can end up taking a significant amount of time, as it
requires opening the directory file for each item in the baseline search
path, looking for one file at a time. Instead, we should just open each
directory once, when we are finding tests in that directory, and store
the paths to the expected results.

This refactoring also puts us in an easier place to implement
per-directory special-cases for LayoutTestFinder: this is most obviously
useful for making http/wpt and imported/w3c/web-platform-tests more
closely match WPT semantics (and a future patch will move to primarily
relying on the WPT manifest to find tests in these directories, rather
than our existing behaviour).

* Tools/Scripts/webkitpy/common/system/filesystem.py:
(FileSystem):
(FileSystem.dirs_under):
(FileSystem.dirs_under.filter_all):
(FileSystem.files_under):
(FileSystem.islink):
(FileSystem.scandir):
(FileSystem.mkdtemp):
* Tools/Scripts/webkitpy/common/system/filesystem_mock.py:
(MockFileSystem.islink):
(MockFileSystem.scandir):
(ScanDirMock):
(ScanDirMock.__init__):
(ScanDirMock.__iter__):
(ScanDirMock.__enter__):
(ScanDirMock.__exit__):
(ScanDirMock.close):
(DirEntryMock):
(DirEntryMock.__init__):
(DirEntryMock.name):
(DirEntryMock.is_dir):
(DirEntryMock.is_file):
(DirEntryMock.is_symlink):
(DirEntryMock.stat):
(DirEntryMock.inode):
* Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py: Added.
(natsort):
(LayoutTestFinder):
(LayoutTestFinder.__init__):
(LayoutTestFinder._load_w3c_resource_data):
(LayoutTestFinder._canonicalize_test_path):
(LayoutTestFinder.get_tests):
(LayoutTestFinder._split_glob):
(LayoutTestFinder._get_tests_in_directory):
(LayoutTestFinder._process_directory):
(LayoutTestFinder.is_test_file):
(LayoutTestFinder._tests_for_path):
(LayoutTestFinder._find_variants):
(LayoutTestFinder._percent_encoded_variant):
(LayoutTestFinder._is_valid_variant):
(LayoutTestFinder._expectations_for_test):
(LayoutTestFinder.is_wpt_crash_test):
* Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder_legacy.py:
(_is_reference_html_file):
(LayoutTestFinder.__init__):
(LayoutTestFinder.find_tests_by_path):
(LayoutTestFinder._is_test_file):
(LayoutTestFinder._is_w3c_resource_file):
(_has_supported_extension): Deleted.
(LayoutTestFinder._is_wpt_test): Deleted.
(LayoutTestFinder._is_wpt_crash_test): Deleted.
(LayoutTestFinder._expand_variants): Deleted.
(LayoutTestFinder._percent_encoded_variant): Deleted.
(LayoutTestFinder._is_valid_variant): Deleted.
(LayoutTestFinder._real_tests): Deleted.
* Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder_legacy_unittest.py:
(LayoutTestFinderTests.tearDown):
(LayoutTestFinderTests.test_find_glob_b2):
(LayoutTestFinderTests.test_supported_test_extensions): Deleted.
* Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder_unittest.py: Added.
(LayoutTestFinderTests):
(LayoutTestFinderTests.__init__):
(LayoutTestFinderTests.setUp):
(LayoutTestFinderTests.tearDown):
(LayoutTestFinderTests.test_split_glob):
* Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(_print_expectations):
* Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(RunTest.test_device_type_specific_listing):
(RunTest.test_ipad_listing):
* Tools/Scripts/webkitpy/port/test.py:
* Tools/Scripts/webkitpy/test/main.py:
(main):
* Tools/Scripts/webkitpy/w3c/test_importer_unittest.py:
(TestImporterTest): Deleted.
(TestImporterTest._parse_options): Deleted.
(TestImporterTest.test_import_dir_with_no_tests_and_no_hg): Deleted.
(TestImporterTest.test_import_dir_with_no_tests): Deleted.
(TestImporterTest.test_import_dir_with_empty_init_py): Deleted.
(TestImporterTest.import_directory): Deleted.
(TestImporterTest.import_downloaded_tests): Deleted.
(TestImporterTest.test_harnesslinks_conversion): Deleted.
(TestImporterTest.test_skip_test_import_download): Deleted.

Canonical link: https://commits.webkit.org/276129@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list