Changeset 92006 in webkit


Ignore:
Timestamp:
Jul 29, 2011 2:04:57 PM (13 years ago)
Author:
Dimitri Glazkov
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.
Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r91911 r92006  
     12011-07-29  Dimitri Glazkov  <dglazkov@chromium.org>
     2
     3        Fix an error in macro collapsing, refactor code to be pretty.
     4        https://bugs.webkit.org/show_bug.cgi?id=65387
     5
     6        My set math was wrong.
     7
     8        Reviewed by Adam Barth.
     9
     10        * Scripts/webkitpy/layout_tests/models/test_configuration.py: Moved collapsing into a classmethod, fixed the math to be correct.
     11        * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added unit tests.
     12
    1132011-07-27  Ryuan Choi  <ryuan.choi@samsung.com>
    214
  • trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py

    r91874 r92006  
    122122        return reduce(set.intersection, matching_sets.values())
    123123
     124    @classmethod
     125    def collapse_macros(cls, macros_dict, specifiers_list):
     126        for i in range(len(specifiers_list)):
     127            for macro_specifier, macro in macros_dict.items():
     128                specifiers_set = set(specifiers_list[i])
     129                macro_set = set(macro)
     130                if specifiers_set >= macro_set:
     131                    specifiers_list[i] = frozenset((specifiers_set - macro_set) | set([macro_specifier]))
     132
    124133    def to_specifiers_list(self, test_configuration_set):
    125134        """Convert a set of TestConfiguration instances into one or more list of specifiers."""
     
    202211        # 4) Substitute specifier subsets that match macros witin each set:
    203212        #   (xp, vista, win7, release) -> (win, release)
    204         for i in range(len(specifiers_list)):
    205             for macro_specifier, macro in self._configuration_macros.items():
    206                 diff = set(specifiers_list[i]) - set(macro)
    207                 if specifiers_list[i] != diff:
    208                     specifiers_list[i] = frozenset(diff | set([macro_specifier]))
     213        self.collapse_macros(self._configuration_macros, specifiers_list)
    209214
    210215        return specifiers_list
  • trunk/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py

    r91874 r92006  
    265265
    266266    def test_macro_collapsing(self):
     267        macros = {'foo': ['bar', 'baz'], 'people': ['bob', 'alice', 'john']}
     268
     269        specifiers_list = [set(['john', 'godzilla', 'bob', 'alice'])]
     270        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
     271        self.assertEquals(specifiers_list, [set(['people', 'godzilla'])])
     272
     273        specifiers_list = [set(['john', 'godzilla', 'alice'])]
     274        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
     275        self.assertEquals(specifiers_list, [set(['john', 'godzilla', 'alice', 'godzilla'])])
     276
     277        specifiers_list = [set(['bar', 'godzilla', 'baz', 'bob', 'alice', 'john'])]
     278        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
     279        self.assertEquals(specifiers_list, [set(['foo', 'godzilla', 'people'])])
     280
     281        specifiers_list = [set(['bar', 'godzilla', 'baz', 'bob']), set(['bar', 'baz']), set(['people', 'alice', 'bob', 'john'])]
     282        TestConfigurationConverter.collapse_macros(macros, specifiers_list)
     283        self.assertEquals(specifiers_list, [set(['bob', 'foo', 'godzilla']), set(['foo']), set(['people'])])
     284
     285    def test_converter_macro_collapsing(self):
    267286        converter = TestConfigurationConverter(self._all_test_configurations, self._macros)
    268287
Note: See TracChangeset for help on using the changeset viewer.