summaryrefslogtreecommitdiff
path: root/test/unittest_configuration.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/unittest_configuration.py')
-rw-r--r--test/unittest_configuration.py30
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()