diff --git a/python/mozbuild/mozbuild/test/test_util.py b/python/mozbuild/mozbuild/test/test_util.py index 486a7f22a2f..b9972a219fe 100644 --- a/python/mozbuild/mozbuild/test/test_util.py +++ b/python/mozbuild/mozbuild/test/test_util.py @@ -370,6 +370,13 @@ class TestStrictOrderingOnAppendListWithFlagsFactory(unittest.TestCase): with self.assertRaises(AttributeError): l['b'].baz = False + l['b'].update(foo=False, bar=12) + self.assertEqual(l['b'].foo, False) + self.assertEqual(l['b'].bar, 12) + + with self.assertRaises(AttributeError): + l['b'].update(xyz=1) + class TestHierarchicalStringListWithFlagsFactory(unittest.TestCase): def test_hierarchical_string_list_with_flags_factory(self): diff --git a/python/mozbuild/mozbuild/util.py b/python/mozbuild/mozbuild/util.py index cebb26ad5cd..30c57e6803a 100644 --- a/python/mozbuild/mozbuild/util.py +++ b/python/mozbuild/mozbuild/util.py @@ -375,6 +375,10 @@ def FlagsFactory(flags): __slots__ = flags.keys() _flags = flags + def update(self, **kwargs): + for k, v in kwargs.iteritems(): + setattr(self, k, v) + def __getattr__(self, name): if name not in self.__slots__: raise AttributeError("'%s' object has no attribute '%s'" %