Title: [287267] trunk/Tools
Revision
287267
Author
n...@apple.com
Date
2021-12-20 11:03:36 -0800 (Mon, 20 Dec 2021)

Log Message

Stop assuming WPT is a reftest based on existence of -ref.html file
https://bugs.webkit.org/show_bug.cgi?id=234510

Reviewed by Sam Sneddon & Darin Adler.

Only the presence of <link rel="match">/<link rel="mismatch"> indicates a test is a reftest. The script
should not assume that the existence of a similarly named file with a `-ref.html` suffix means that the
original test file is reftest.

Here's how upstream WPT detects reftests:
https://github.com/web-platform-tests/wpt/blob/22f29564bb82b407aeaf6507c8efffdbd51b9974/tools/manifest/sourcefile.py#L1065

* Scripts/webkitpy/w3c/test_parser.py:
(TestParser.analyze_test):
(TestParser.fuzzy_metadata):
(TestParser.is_reference_filename):
(TestParser.potential_ref_filename): Deleted.
(TestParser.is_wpt_reftest): Deleted.
* Scripts/webkitpy/w3c/test_parser_unittest.py:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (287266 => 287267)


--- trunk/Tools/ChangeLog	2021-12-20 19:02:00 UTC (rev 287266)
+++ trunk/Tools/ChangeLog	2021-12-20 19:03:36 UTC (rev 287267)
@@ -1,3 +1,25 @@
+2021-12-20  Tim Nguyen  <n...@apple.com>
+
+        Stop assuming WPT is a reftest based on existence of -ref.html file
+        https://bugs.webkit.org/show_bug.cgi?id=234510
+
+        Reviewed by Sam Sneddon & Darin Adler.
+
+        Only the presence of <link rel="match">/<link rel="mismatch"> indicates a test is a reftest. The script
+        should not assume that the existence of a similarly named file with a `-ref.html` suffix means that the
+        original test file is reftest.
+
+        Here's how upstream WPT detects reftests:
+        https://github.com/web-platform-tests/wpt/blob/22f29564bb82b407aeaf6507c8efffdbd51b9974/tools/manifest/sourcefile.py#L1065
+
+        * Scripts/webkitpy/w3c/test_parser.py:
+        (TestParser.analyze_test):
+        (TestParser.fuzzy_metadata):
+        (TestParser.is_reference_filename):
+        (TestParser.potential_ref_filename): Deleted.
+        (TestParser.is_wpt_reftest): Deleted.
+        * Scripts/webkitpy/w3c/test_parser_unittest.py:
+
 2021-12-20  Lauro Moura  <lmo...@igalia.com>
 
         [webkitcorepy] Require cryptography while on Linux with Py3

Modified: trunk/Tools/Scripts/webkitpy/w3c/test_parser.py (287266 => 287267)


--- trunk/Tools/Scripts/webkitpy/w3c/test_parser.py	2021-12-20 19:02:00 UTC (rev 287266)
+++ trunk/Tools/Scripts/webkitpy/w3c/test_parser.py	2021-12-20 19:03:36 UTC (rev 287267)
@@ -120,16 +120,12 @@
                     reference_relpath = self.filesystem.relpath(self.filesystem.dirname(self.filename), self.filesystem.dirname(ref_file)) + self.filesystem.sep
                     test_info['reference_support_info'] = {'reference_relpath': reference_relpath, 'files': reference_support_files}
 
-        # not all reference tests have a <link rel='match'> element in WPT repo
-        elif self.is_wpt_reftest():
-            test_info = {'test': self.filename, 'reference': self.potential_ref_filename()}
-            test_info['reference_support_info'] = {}
         # we check for wpt manual test before checking for jstest, as some WPT manual tests can be classified as CSS JS tests
-        elif self.is_wpt_manualtest():
+        elif self.is_wpt_manualtest() and not self.is_reference_filename():
             test_info = {'test': self.filename, 'manualtest': True}
         elif self.is_jstest():
             test_info = {'test': self.filename, 'jstest': True}
-        elif '-ref' in self.filename or 'reference' in self.filename:
+        elif self.is_reference_filename():
             test_info = {'referencefile': self.filename}
         elif self.options['all'] is True:
             test_info = {'test': self.filename}
@@ -168,6 +164,12 @@
 
         return False
 
+    def is_reference_filename(self):
+        # From tools/manifest/sourcefile.py in WPT repository
+        # https://github.com/web-platform-tests/wpt/blob/22f29564bb82b407aeaf6507c8efffdbd51b9974/tools/manifest/sourcefile.py#L405
+        reference_file_re = re.compile(r'(^|[\-_])(not)?ref[0-9]*([\-_]|$)')
+        return "/reference/" in self.filename or bool(reference_file_re.search(self.filename))
+
     def is_slow_test(self):
         return any([match.name == 'meta' and match['name'] == 'timeout' for match in self.test_doc.findAll(content='long')])
 
@@ -237,15 +239,6 @@
 
         return result
 
-    def potential_ref_filename(self):
-        parts = self.filesystem.splitext(self.filename)
-        return parts[0] + '-ref' + parts[1]
-
-    def is_wpt_reftest(self):
-        """Returns whether the test is a ref test according WPT rules (i.e. file has a -ref.html counterpart)."""
-        parts = self.filesystem.splitext(self.filename)
-        return  self.filesystem.isfile(self.potential_ref_filename())
-
     def support_files(self, doc):
         """ Searches the file for all paths specified in url()'s, href or src attributes."""
         support_files = []

Modified: trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py (287266 => 287267)


--- trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py	2021-12-20 19:02:00 UTC (rev 287266)
+++ trunk/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py	2021-12-20 19:03:36 UTC (rev 287267)
@@ -195,6 +195,15 @@
         test_info = parser.analyze_test(test_contents=test_html)
         self.assertFalse('manualtest' in test_info.keys() and test_info['manualtest'], 'test_info is not manual')
 
+        parser = TestParser(options, os.path.join(test_path, 'somefile-ref-manual.html'))
+        test_info = parser.analyze_test(test_contents=test_html)
+        self.assertFalse('manualtest' in test_info.keys() and test_info['manualtest'], 'test_info is not manual')
+
+        ref_test_path = os.path.join(os.path.sep, 'some', 'madeup', 'path', 'reference')
+        parser = TestParser(options, os.path.join(ref_test_path, 'somefile-manual.html'))
+        test_info = parser.analyze_test(test_contents=test_html)
+        self.assertFalse('manualtest' in test_info.keys() and test_info['manualtest'], 'test_info is not manual')
+
     def test_analyze_css_manual_test(self):
         """ Tests analyze_test() using a css manual test """
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to