diff options
Diffstat (limited to 'test/unittest_configuration.py')
-rw-r--r-- | test/unittest_configuration.py | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/test/unittest_configuration.py b/test/unittest_configuration.py index 6798935..c95f8a1 100644 --- a/test/unittest_configuration.py +++ b/test/unittest_configuration.py @@ -25,11 +25,12 @@ from sys import version_info from logilab.common.testlib import TestCase, unittest_main from logilab.common.optik_ext import OptionValueError from logilab.common.configuration import Configuration, \ - OptionsManagerMixIn, OptionsProviderMixIn, Method, read_old_config + OptionsManagerMixIn, OptionsProviderMixIn, Method, read_old_config, \ + merge_options DATA = join(dirname(abspath(__file__)), 'data') -options = [('dothis', {'type':'yn', 'action': 'store', 'default': True, 'metavar': '<y or n>'}), +OPTIONS = [('dothis', {'type':'yn', 'action': 'store', 'default': True, 'metavar': '<y or n>'}), ('value', {'type': 'string', 'metavar': '<string>', 'short': 'v'}), ('multiple', {'type': 'csv', 'default': ('yop', 'yep'), 'metavar': '<comma separated values>', @@ -56,7 +57,7 @@ class MyConfiguration(Configuration): class ConfigurationTC(TestCase): def setUp(self): - self.cfg = MyConfiguration(name='test', options=options, usage='Just do it ! (tm)') + self.cfg = MyConfiguration(name='test', options=OPTIONS, usage='Just do it ! (tm)') def test_default(self): cfg = self.cfg @@ -201,14 +202,14 @@ named=key:val diffgroup=pouet""") - def test_loopback(self): + def test_roundtrip(self): cfg = self.cfg f = tempfile.mktemp() stream = open(f, 'w') try: cfg.generate_config(stream) stream.close() - new_cfg = MyConfiguration(name='testloop', options=options) + new_cfg = MyConfiguration(name='testloop', options=OPTIONS) new_cfg.load_file_configuration(f) self.assertEqual(cfg['dothis'], new_cfg['dothis']) self.assertEqual(cfg['multiple'], new_cfg['multiple']) @@ -329,6 +330,25 @@ class RegrTC(TestCase): self.linter.load_command_line_configuration([]) self.assertEqual(self.linter.config.profile, False) +class MergeTC(TestCase): + + def test_merge1(self): + merged = merge_options([('dothis', {'type':'yn', 'action': 'store', 'default': True, 'metavar': '<y or n>'}), + ('dothis', {'type':'yn', 'action': 'store', 'default': False, 'metavar': '<y or n>'}), + ]) + self.assertEqual(len(merged), 1) + self.assertEqual(merged[0][0], 'dothis') + self.assertEqual(merged[0][1]['default'], True) + + def test_merge2(self): + merged = merge_options([('dothis', {'type':'yn', 'action': 'store', 'default': True, 'metavar': '<y or n>'}), + ('value', {'type': 'string', 'metavar': '<string>', 'short': 'v'}), + ('dothis', {'type':'yn', 'action': 'store', 'default': False, 'metavar': '<y or n>'}), + ]) + self.assertEqual(len(merged), 2) + self.assertEqual(merged[0][0], 'value') + self.assertEqual(merged[1][0], 'dothis') + self.assertEqual(merged[1][1]['default'], True) if __name__ == '__main__': unittest_main() |