Title: [261552] trunk/Tools
Revision
261552
Author
clo...@igalia.com
Date
2020-05-12 04:17:57 -0700 (Tue, 12 May 2020)

Log Message

WPT test importer fails to update references in <link> tags
https://bugs.webkit.org/show_bug.cgi?id=211762

Reviewed by Youenn Fablet.

When importing WPT test references, ensure relative paths are also
updated for the href attribute in <link> tags.
Also fix a bug that was causing wrong updates on the paths due to
the characters in reference_relpath not escaped when performing
the regex substitution in convert_reference_relpaths(). For example:
"resources/script.js" was changed to "resourcscript.js" when reference_relpath was '../'

Improve also the unit test case to check for the fixes in this patch.

* Scripts/webkitpy/w3c/test_converter.py:
(_W3CTestConverter.convert_reference_relpaths):
(_W3CTestConverter.convert_attributes_if_needed):
* Scripts/webkitpy/w3c/test_converter_unittest.py:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (261551 => 261552)


--- trunk/Tools/ChangeLog	2020-05-12 10:51:03 UTC (rev 261551)
+++ trunk/Tools/ChangeLog	2020-05-12 11:17:57 UTC (rev 261552)
@@ -1,3 +1,24 @@
+2020-05-12  Carlos Alberto Lopez Perez  <clo...@igalia.com>
+
+        WPT test importer fails to update references in <link> tags
+        https://bugs.webkit.org/show_bug.cgi?id=211762
+
+        Reviewed by Youenn Fablet.
+
+        When importing WPT test references, ensure relative paths are also
+        updated for the href attribute in <link> tags.
+        Also fix a bug that was causing wrong updates on the paths due to
+        the characters in reference_relpath not escaped when performing
+        the regex substitution in convert_reference_relpaths(). For example:
+        "resources/script.js" was changed to "resourcscript.js" when reference_relpath was '../'
+
+        Improve also the unit test case to check for the fixes in this patch.
+
+        * Scripts/webkitpy/w3c/test_converter.py:
+        (_W3CTestConverter.convert_reference_relpaths):
+        (_W3CTestConverter.convert_attributes_if_needed):
+        * Scripts/webkitpy/w3c/test_converter_unittest.py:
+
 2020-05-12  Philippe Normand  <pnorm...@igalia.com>
 
         [Flatpak SDK] Include clang++ and g++ in toolchains

Modified: trunk/Tools/Scripts/webkitpy/w3c/test_converter.py (261551 => 261552)


--- trunk/Tools/Scripts/webkitpy/w3c/test_converter.py	2020-05-12 10:51:03 UTC (rev 261551)
+++ trunk/Tools/Scripts/webkitpy/w3c/test_converter.py	2020-05-12 11:17:57 UTC (rev 261552)
@@ -186,8 +186,8 @@
             if converted.find(path) != -1:
                 # FIXME: This doesn't handle an edge case where simply removing the relative path doesn't work.
                 # See http://webkit.org/b/135677 for details.
-                new_path = re.sub(self.reference_support_info['reference_relpath'], '', path, 1)
-                converted = re.sub(path, new_path, converted)
+                new_path = re.sub(re.escape(self.reference_support_info['reference_relpath']), '', path, 1)
+                converted = re.sub(re.escape(path), new_path, converted)
 
         return converted
 
@@ -219,13 +219,19 @@
                 new_style = self.convert_style_data(attr[1])
                 converted = re.sub(re.escape(attr[1]), new_style, converted)
 
+        # Convert relative paths
         src_tags = ('script', 'style', 'img', 'frame', 'iframe', 'input', 'layer', 'textarea', 'video', 'audio')
-        if tag in src_tags and self.reference_support_info is not None and  self.reference_support_info != {}:
-            for attr_name, attr_value in attrs:
-                if attr_name == 'src':
-                    new_path = self.convert_reference_relpaths(attr_value)
-                    converted = re.sub(re.escape(attr_value), new_path, converted)
-
+        if self.reference_support_info is not None and self.reference_support_info != {}:
+            if tag in src_tags:
+                for attr_name, attr_value in attrs:
+                    if attr_name == 'src':
+                        new_path = self.convert_reference_relpaths(attr_value)
+                        converted = re.sub(re.escape(attr_value), new_path, converted)
+            if tag == 'link':
+                for attr_name, attr_value in attrs:
+                    if attr_name == 'href':
+                        new_path = self.convert_reference_relpaths(attr_value)
+                        converted = re.sub(re.escape(attr_value), new_path, converted)
         self.converted_data.append(converted)
 
     def add_webkit_test_runner_options_if_needed(self):

Modified: trunk/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py (261551 => 261552)


--- trunk/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py	2020-05-12 10:51:03 UTC (rev 261551)
+++ trunk/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py	2020-05-12 11:17:57 UTC (rev 261552)
@@ -296,6 +296,8 @@
 
         test_html = """<html>
 <head>
+<link href=""
+<video src=""
 <script src=""
 <style src=""
 </head>
@@ -304,7 +306,8 @@
 </body>
 </html>
 """
-        test_reference_support_info = {'reference_relpath': '../', 'files': ['../../some-script.js', '../../../some-style.css', '../../../../some-image.jpg'], 'elements': ['script', 'style', 'img']}
+        test_reference_support_info = {'reference_relpath': '../', 'files': ['../../some-script.js', '../../../some-style.css', '../../../../some-image.jpg', '../support/base-style.css', 'resources/video.mkv'],
+                                       'elements': ['script', 'style', 'img', 'link', 'video']}
         converter = _W3CTestConverter(DUMMY_PATH, DUMMY_FILENAME, test_reference_support_info)
 
         oc = OutputCapture()
@@ -410,9 +413,10 @@
     def verify_reference_relative_paths(self, converted, reference_support_info):
         idx = 0
         for path in reference_support_info['files']:
-            expected_path = re.sub(reference_support_info['reference_relpath'], '', path, 1)
+            expected_path = re.sub(re.escape(reference_support_info['reference_relpath']), '', path, 1)
             element = reference_support_info['elements'][idx]
-            expected_tag = '<' + element + ' src="" + expected_path + '\">'
+            element_src = 'href' if element == 'link' else 'src'
+            expected_tag = '<' + element + ' ' + element_src + '=\"' + expected_path + '\">'
             self.assertTrue(expected_tag in converted[2], 'relative path ' + path + ' was not converted correcty')
             idx += 1
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to