Title: [92006] trunk/Tools
Revision
92006
Author
[email protected]
Date
2011-07-29 14:04:57 -0700 (Fri, 29 Jul 2011)

Log Message

Fix an error in macro collapsing, refactor code to be pretty.
https://bugs.webkit.org/show_bug.cgi?id=65387

My set math was wrong.

Reviewed by Adam Barth.

* Scripts/webkitpy/layout_tests/models/test_configuration.py: Moved collapsing into a classmethod, fixed the math to be correct.
* Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added unit tests.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (92005 => 92006)


--- trunk/Tools/ChangeLog	2011-07-29 20:20:52 UTC (rev 92005)
+++ trunk/Tools/ChangeLog	2011-07-29 21:04:57 UTC (rev 92006)
@@ -1,3 +1,15 @@
+2011-07-29  Dimitri Glazkov  <[email protected]>
+
+        Fix an error in macro collapsing, refactor code to be pretty.
+        https://bugs.webkit.org/show_bug.cgi?id=65387
+
+        My set math was wrong.
+
+        Reviewed by Adam Barth.
+
+        * Scripts/webkitpy/layout_tests/models/test_configuration.py: Moved collapsing into a classmethod, fixed the math to be correct.
+        * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added unit tests.
+
 2011-07-27  Ryuan Choi  <[email protected]>
 
         Style bot complains about EFL-specific forward declaration naming.

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py (92005 => 92006)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py	2011-07-29 20:20:52 UTC (rev 92005)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py	2011-07-29 21:04:57 UTC (rev 92006)
@@ -121,6 +121,15 @@
 
         return reduce(set.intersection, matching_sets.values())
 
+    @classmethod
+    def collapse_macros(cls, macros_dict, specifiers_list):
+        for i in range(len(specifiers_list)):
+            for macro_specifier, macro in macros_dict.items():
+                specifiers_set = set(specifiers_list[i])
+                macro_set = set(macro)
+                if specifiers_set >= macro_set:
+                    specifiers_list[i] = frozenset((specifiers_set - macro_set) | set([macro_specifier]))
+
     def to_specifiers_list(self, test_configuration_set):
         """Convert a set of TestConfiguration instances into one or more list of specifiers."""
 
@@ -201,10 +210,6 @@
 
         # 4) Substitute specifier subsets that match macros witin each set:
         #   (xp, vista, win7, release) -> (win, release)
-        for i in range(len(specifiers_list)):
-            for macro_specifier, macro in self._configuration_macros.items():
-                diff = set(specifiers_list[i]) - set(macro)
-                if specifiers_list[i] != diff:
-                    specifiers_list[i] = frozenset(diff | set([macro_specifier]))
+        self.collapse_macros(self._configuration_macros, specifiers_list)
 
         return specifiers_list

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py (92005 => 92006)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py	2011-07-29 20:20:52 UTC (rev 92005)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py	2011-07-29 21:04:57 UTC (rev 92006)
@@ -264,6 +264,25 @@
         self.assertEquals(converter.to_specifiers_list(configs_to_match), [set(['release', 'gpu', 'lucid', 'x86']), set(['gpu', 'win7']), set(['release', 'gpu', 'xp', 'snowleopard'])])
 
     def test_macro_collapsing(self):
+        macros = {'foo': ['bar', 'baz'], 'people': ['bob', 'alice', 'john']}
+
+        specifiers_list = [set(['john', 'godzilla', 'bob', 'alice'])]
+        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
+        self.assertEquals(specifiers_list, [set(['people', 'godzilla'])])
+
+        specifiers_list = [set(['john', 'godzilla', 'alice'])]
+        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
+        self.assertEquals(specifiers_list, [set(['john', 'godzilla', 'alice', 'godzilla'])])
+
+        specifiers_list = [set(['bar', 'godzilla', 'baz', 'bob', 'alice', 'john'])]
+        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
+        self.assertEquals(specifiers_list, [set(['foo', 'godzilla', 'people'])])
+
+        specifiers_list = [set(['bar', 'godzilla', 'baz', 'bob']), set(['bar', 'baz']), set(['people', 'alice', 'bob', 'john'])]
+        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
+        self.assertEquals(specifiers_list, [set(['bob', 'foo', 'godzilla']), set(['foo']), set(['people'])])
+
+    def test_converter_macro_collapsing(self):
         converter = TestConfigurationConverter(self._all_test_configurations, self._macros)
 
         configs_to_match = set([
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to