mirror of https://github.com/tLDP/python-tldp
adding some basic testing for configuration file reading
This commit is contained in:
parent
7633cd1c49
commit
1ee227f3f2
|
@ -0,0 +1,218 @@
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
import argparse
|
||||||
|
from argparse import Namespace
|
||||||
|
|
||||||
|
from tldptesttools import TestToolsFilesystem
|
||||||
|
from tldptesttools import CCTestTools
|
||||||
|
|
||||||
|
# -- SUT
|
||||||
|
from tldp.cascadingconfig import CascadingConfig
|
||||||
|
from tldp.cascadingconfig import DefaultFreeArgumentParser
|
||||||
|
|
||||||
|
|
||||||
|
class Test_argv_from_env(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_argv_from_env(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class Test_argv_from_cfg(TestToolsFilesystem):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.makeTempdir()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.removeTempdir()
|
||||||
|
|
||||||
|
def test_argv_from_env(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class TestDefaultFreeArgumentParser(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_basic(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
self.assertIsInstance(ap, argparse.ArgumentParser)
|
||||||
|
self.assertIsInstance(ap, DefaultFreeArgumentParser)
|
||||||
|
|
||||||
|
|
||||||
|
class TestCascadingConfig(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.ap = DefaultFreeArgumentParser()
|
||||||
|
|
||||||
|
def test_constructor(self):
|
||||||
|
cc = CascadingConfig('tag', self.ap, [])
|
||||||
|
self.assertIsInstance(cc, CascadingConfig)
|
||||||
|
|
||||||
|
def test_parse(self):
|
||||||
|
cc = CascadingConfig('tag', self.ap, [])
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertIsInstance(config, Namespace)
|
||||||
|
self.assertIsInstance(args, list)
|
||||||
|
|
||||||
|
|
||||||
|
class TestCascadingConfigBasic(TestToolsFilesystem):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.makeTempdir()
|
||||||
|
self.ap = DefaultFreeArgumentParser()
|
||||||
|
self.ap.add_argument('--sneeze', action='store_true', default=False)
|
||||||
|
self.ap.add_argument('--eructate', default=[], type=str)
|
||||||
|
|
||||||
|
def test_reading_env(self):
|
||||||
|
argv = []
|
||||||
|
env = {'EFFLUVIA_SNEEZE': 'True'}
|
||||||
|
cc = CascadingConfig('effluvia', self.ap, argv=argv, env=env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertTrue(config.sneeze)
|
||||||
|
|
||||||
|
|
||||||
|
class CascadingConfigBasicTest(CCTestTools):
|
||||||
|
|
||||||
|
def test_defaults_returned(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--configfile', default=None, type=str)
|
||||||
|
ap.add_argument('--size', default=9, type=int)
|
||||||
|
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv=''.split(),
|
||||||
|
env=dict(),
|
||||||
|
cfg='',
|
||||||
|
exp_config=Namespace(size=9),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config.size, config.size)
|
||||||
|
|
||||||
|
def test_cfg_is_read_passed_by_env(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--configfile', default=None, type=str)
|
||||||
|
ap.add_argument('--size', default=9, type=int)
|
||||||
|
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv=''.split(),
|
||||||
|
env=dict(),
|
||||||
|
cfg='[tag]\nsize = 8',
|
||||||
|
exp_config=Namespace(size=8),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
|
||||||
|
self.writeconfig(c)
|
||||||
|
c.env.setdefault('TAG_CONFIGFILE', c.configfile)
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config.size, config.size)
|
||||||
|
|
||||||
|
def test_cfg_is_read_passed_by_argv(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--configfile', default=None, type=str)
|
||||||
|
ap.add_argument('--size', default=9, type=int)
|
||||||
|
|
||||||
|
import logging
|
||||||
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv=''.split(),
|
||||||
|
env=dict(),
|
||||||
|
cfg='[tag]\nsize = 8',
|
||||||
|
exp_config=Namespace(size=8),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
self.writeconfig(c)
|
||||||
|
c.argv.extend(['--configfile', c.configfile])
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config.size, config.size)
|
||||||
|
|
||||||
|
def test_precedence_env_cfg(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--configfile', default=None, type=str)
|
||||||
|
ap.add_argument('--size', default=9, type=int)
|
||||||
|
|
||||||
|
import logging
|
||||||
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv=''.split(),
|
||||||
|
env=dict(TAG_SIZE=7, ),
|
||||||
|
cfg='[tag]\nsize = 8',
|
||||||
|
exp_config=Namespace(size=7),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
self.writeconfig(c)
|
||||||
|
c.argv.extend(['--configfile', c.configfile])
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config.size, config.size)
|
||||||
|
|
||||||
|
def test_precedence_argv_env_cfg(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--configfile', default=None, type=str)
|
||||||
|
ap.add_argument('--size', default=9, type=int)
|
||||||
|
|
||||||
|
import logging
|
||||||
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv='--size 6'.split(),
|
||||||
|
env=dict(TAG_SIZE=7, ),
|
||||||
|
cfg='[tag]\nsize = 8',
|
||||||
|
exp_config=Namespace(size=6),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
self.writeconfig(c)
|
||||||
|
c.argv.extend(['--configfile', c.configfile])
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config.size, config.size)
|
||||||
|
|
||||||
|
def test_basic_emptydefault(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--source', default='', action='append', type=str)
|
||||||
|
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv=''.split(),
|
||||||
|
env=dict(),
|
||||||
|
cfg='',
|
||||||
|
exp_config=Namespace(source=''),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config, config)
|
||||||
|
self.assertEquals(c.exp_args, args)
|
||||||
|
|
||||||
|
def test_basic_argv(self):
|
||||||
|
ap = DefaultFreeArgumentParser()
|
||||||
|
ap.add_argument('--source', default='', action='append', type=str)
|
||||||
|
|
||||||
|
c = Namespace(
|
||||||
|
tag='tag',
|
||||||
|
argparser=ap,
|
||||||
|
argv='--source /some/path'.split(),
|
||||||
|
env=dict(),
|
||||||
|
cfg='',
|
||||||
|
exp_config=Namespace(source=['/some/path']),
|
||||||
|
exp_args=[],
|
||||||
|
)
|
||||||
|
cc = CascadingConfig(c.tag, c.argparser, argv=c.argv, env=c.env)
|
||||||
|
config, args = cc.parse()
|
||||||
|
self.assertEquals(c.exp_config, config)
|
||||||
|
self.assertEquals(c.exp_args, args)
|
||||||
|
|
||||||
|
# -- end of file
|
|
@ -0,0 +1,23 @@
|
||||||
|
|
||||||
|
from __future__ import absolute_import, division, print_function
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
from argparse import Namespace
|
||||||
|
|
||||||
|
# -- SUT
|
||||||
|
from tldp.config import collectconfiguration
|
||||||
|
|
||||||
|
|
||||||
|
class TestConfigWorks(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_basic(self):
|
||||||
|
config, args = collectconfiguration('tag', [])
|
||||||
|
self.assertIsInstance(config, Namespace)
|
||||||
|
self.assertIsInstance(args, list)
|
||||||
|
|
||||||
|
def test_singleoptarg(self):
|
||||||
|
config, args = collectconfiguration('tag', ['--pubdir', '.'])
|
||||||
|
self.assertEquals(config.pubdir, '.')
|
||||||
|
|
||||||
|
#
|
||||||
|
# -- end of file
|
Loading…
Reference in New Issue