diff options
-rw-r--r-- | logilab/common/configuration.py | 4 | ||||
-rw-r--r-- | test/unittest_configuration.py | 16 |
2 files changed, 18 insertions, 2 deletions
diff --git a/logilab/common/configuration.py b/logilab/common/configuration.py index 9c23525..7a54f1a 100644 --- a/logilab/common/configuration.py +++ b/logilab/common/configuration.py @@ -949,8 +949,8 @@ class ConfigurationMixIn(OptionsManagerMixIn, OptionsProviderMixIn): options_by_group = {} for optname, optdict in options: options_by_group.setdefault(optdict.get('group', self.name.upper()), []).append((optname, optdict)) - for group, options in options_by_group.items(): - self.add_option_group(group, None, options, self) + for group, group_options in options_by_group.items(): + self.add_option_group(group, None, group_options, self) self.options += tuple(options) def load_defaults(self): diff --git a/test/unittest_configuration.py b/test/unittest_configuration.py index f59a0e0..ea7cdca 100644 --- a/test/unittest_configuration.py +++ b/test/unittest_configuration.py @@ -469,6 +469,22 @@ class RegrTC(TestCase): self.linter.load_command_line_configuration([]) self.assertEqual(self.linter.config.profile, False) + def test_register_options_multiple_groups(self): + """ensure multiple option groups can be registered at once""" + config = Configuration() + self.assertEqual(config.options, ()) + new_options = ( + ('option1', {'type': 'string', 'help': '', + 'group': 'g1', 'level': 2}), + ('option2', {'type': 'string', 'help': '', + 'group': 'g1', 'level': 2}), + ('option3', {'type': 'string', 'help': '', + 'group': 'g2', 'level': 2}), + ) + config.register_options(new_options) + self.assertEqual(config.options, new_options) + + class MergeTC(TestCase): def test_merge1(self): |