W3C test import script prefixes some properties that it shouldn't
authorbjonesbe@adobe.com <bjonesbe@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Aug 2013 00:10:20 +0000 (00:10 +0000)
committerbjonesbe@adobe.com <bjonesbe@adobe.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 1 Aug 2013 00:10:20 +0000 (00:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=119357

Reviewed by Dirk Pranke.

Some prefixed properties also have unprefixed implemetations, but when
the implementations aren't identical, they aren't declared in
CSSPropertyNames.in on the same line. This fixes the import script so
that it catches all instances of prefixed properties that have an
unprefixed variant, and does not add the prefix in those cases.

* Scripts/webkitpy/w3c/test_converter.py:
(W3CTestConverter.read_webkit_prefixed_css_property_list): Read all of
the properties on every line and record if they are prefixed or not.
Use this information to only return prefixed properties that do not
have any unprefixed variant. The prefixed property list has also
changed to not include the '-webkit-' prefix, making it much easier to
do the comparison, and removing the need to remove the prefix later.
(W3CTestConverter.add_webkit_prefix_to_unprefixed_properties): This no
longer needs to remove the '-webkit-' prefix, but needs to add it in
the case where a property that needs a prefix is found.
* Scripts/webkitpy/w3c/test_converter_unittest.py:
(W3CTestConverterTest.test_read_prefixed_property_list): Remove assert
for '-webkit-' prefix, as it is no longer included in the properties
in the prefixed property list.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@153550 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/webkitpy/w3c/test_converter.py
Tools/Scripts/webkitpy/w3c/test_converter_unittest.py

index 86a65ff..82c0019 100644 (file)
@@ -1,5 +1,33 @@
 2013-07-31  Bem Jones-Bey  <bjonesbe@adobe.com>
 
+        W3C test import script prefixes some properties that it shouldn't
+        https://bugs.webkit.org/show_bug.cgi?id=119357
+
+        Reviewed by Dirk Pranke.
+
+        Some prefixed properties also have unprefixed implemetations, but when
+        the implementations aren't identical, they aren't declared in
+        CSSPropertyNames.in on the same line. This fixes the import script so
+        that it catches all instances of prefixed properties that have an
+        unprefixed variant, and does not add the prefix in those cases.
+
+        * Scripts/webkitpy/w3c/test_converter.py:
+        (W3CTestConverter.read_webkit_prefixed_css_property_list): Read all of
+        the properties on every line and record if they are prefixed or not.
+        Use this information to only return prefixed properties that do not
+        have any unprefixed variant. The prefixed property list has also
+        changed to not include the '-webkit-' prefix, making it much easier to
+        do the comparison, and removing the need to remove the prefix later.
+        (W3CTestConverter.add_webkit_prefix_to_unprefixed_properties): This no
+        longer needs to remove the '-webkit-' prefix, but needs to add it in
+        the case where a property that needs a prefix is found.
+        * Scripts/webkitpy/w3c/test_converter_unittest.py:
+        (W3CTestConverterTest.test_read_prefixed_property_list): Remove assert
+        for '-webkit-' prefix, as it is no longer included in the properties
+        in the prefixed property list.
+
+2013-07-31  Bem Jones-Bey  <bjonesbe@adobe.com>
+
         Update location of w3c shapes tests to reflect new import location
         https://bugs.webkit.org/show_bug.cgi?id=118156
 
index 2e9bfcb..77d2de0 100644 (file)
@@ -56,20 +56,24 @@ class W3CTestConverter(object):
 
     def read_webkit_prefixed_css_property_list(self):
         prefixed_properties = []
+        unprefixed_properties = set()
 
         contents = self._filesystem.read_text_file(self._css_property_file)
         for line in contents.splitlines():
-            # Find lines starting with the -webkit- prefix.
-            match = re.match('-webkit-[\w|-]*', line)
-            if match:
-                # Ignore lines where both the prefixed and non-prefixed property
-                # are supported - denoted by -webkit-some-property = some-property.
-                fields = line.split(self._css_property_split_string)
-                if len(fields) == 2 and fields[1].strip() in fields[0].strip():
-                    continue
-                prefixed_properties.append(match.group(0))
-
-        return prefixed_properties
+            if re.match('^(#|//)', line):
+                # skip comments and preprocessor directives
+                continue
+            fields = line.split(self._css_property_split_string)
+            for prop in fields:
+                # Find properties starting with the -webkit- prefix.
+                match = re.match('-webkit-([\w|-]*)', prop)
+                if match:
+                    prefixed_properties.append(match.group(1))
+                else:
+                    unprefixed_properties.add(prop.strip())
+
+        # Ignore any prefixed properties for which an unprefixed version is supported
+        return [prop for prop in prefixed_properties if prop not in unprefixed_properties]
 
     def convert_for_webkit(self, new_path, filename):
         """ Converts a file's |contents| so it will function correctly in its |new_path| in Webkit.
@@ -169,20 +173,19 @@ class W3CTestConverter(object):
 
         converted_properties = []
 
-        for prefixed_property in self.prefixed_properties:
+        for raw_property in self.prefixed_properties:
             # FIXME: add in both the prefixed and unprefixed versions, rather than just replacing them?
             # That might allow the imported test to work in other browsers more easily.
 
-            unprefixed_property = prefixed_property.replace('-webkit-', '')
-
             # Look for the various ways it might be in the CSS
             # Match the the property preceded by either whitespace or left curly brace
             # or at the beginning of the string (for inline style attribute)
-            pattern = '([\s{]|^)' + unprefixed_property + '(\s+:|:)'
+            pattern = '([\s{]|^)' + raw_property + '(\s+:|:)'
             if re.search(pattern, text):
-                _log.info('converting %s -> %s' % (unprefixed_property, prefixed_property))
-                converted_properties.append(prefixed_property)
-                text = re.sub(pattern, prefixed_property + ':', text)
+                replacement_property = '-webkit-%s' % raw_property
+                _log.info('converting %s -> %s' % (raw_property, replacement_property))
+                converted_properties.append(replacement_property)
+                text = re.sub(pattern, replacement_property + ':', text)
 
         # FIXME: Handle the JS versions of these properties and GetComputedStyle, too.
         return (converted_properties, text)
index ff104ab..0620ad2 100644 (file)
@@ -50,8 +50,6 @@ class W3CTestConverterTest(unittest.TestCase):
         converter = W3CTestConverter()
         prop_list = converter.prefixed_properties
         self.assertTrue(prop_list, 'No prefixed properties found')
-        for prop in prop_list:
-            self.assertTrue(prop.startswith('-webkit-'))
 
     def test_convert_for_webkit_nothing_to_convert(self):
         """ Tests convert_for_webkit() using a basic test that has nothing to convert """