summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--logilab/common/configuration.py4
-rw-r--r--test/unittest_configuration.py16
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):