diff options
author | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2017-05-11 17:05:52 +0200 |
---|---|---|
committer | Adrien Di Mascio <Adrien.DiMascio@logilab.fr> | 2017-05-11 17:05:52 +0200 |
commit | 372e76ae28e3dc659e606dd38237a04f0ccd8066 (patch) | |
tree | 233bbd868639dd32529424f5803c3e40bb2c34a7 | |
parent | efe27c4a0250b0ac3726e64813e5ff157e51e814 (diff) | |
download | logilab-common-372e76ae28e3dc659e606dd38237a04f0ccd8066.tar.gz |
[configuration] fix registration of multiple groups at once
The "options" iteration variable hid the original function
parameters, therefore only the options of the last group
were registered.
Rename the iteration variable and everything's fine.
-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): |