Exemplo n.º 1
0
    def test_config_section(self):
        loader = self.getloader()
        db = getdb()
        getSection = lambda secname: {'section': secname}
        p = ConfigParameter(name='topParam2',
                            loader_opts={'conffile': getSection(None)})
        db.add_param(p)

        p = ConfigParameter(name='secParam1',
                            loader_opts={'conffile': getSection('section1')})
        db.add_param(p)

        p = ConfigParameter(name='secParam2',
                            loader_opts={'conffile': getSection('section3')})
        db.add_param(p)

        p = ConfigParameter(name='secParamx',
                            loader_opts={'conffile': getSection('sectionx')})
        db.add_param(p)

        ans = loader.load(db, self.config_file)
        self.assertEqual(ans.topParam2, '"s-value"')
        self.assertEqual(ans.secParam1, '1 2 3')
        self.assertEqual(ans.secParam2, 'somevalue')
        self.assertFalse(hasattr(ans, 'topParamx'))
Exemplo n.º 2
0
 def setUp(self):
     self.conf = Namespace()
     choices = ['cal1', 'cal2', 'cal3']
     setattr(self.conf, 'intparam', 0x77992213)
     setattr(self.conf, 'strparam', 'a complicat3d string#!')
     setattr(self.conf, 'trueparam', True)
     setattr(self.conf, 'falseparam', False)
     setattr(self.conf, 'choiceparam', choices[1])
     self.db = getdb()
     p = ConfigParameter(name='intparam', type=int)
     self.db.add_param(p)
     p = ConfigParameter(name='strparam', type=str)
     self.db.add_param(p)
     p = ConfigParameter(name='trueparam',
                         type=bool,
                         loader_opts={'conffile': {
                             'section': 'section_1'
                         }})
     self.db.add_param(p)
     p = ConfigParameter(
         name='falseparam',
         type=bool,
         loader_opts={
             'conffile': {
                 'converter':
                 lambda x: True
                 if bool(x) and x.lower() != 'false' else False
             }
         })
     self.db.add_param(p)
     p = ConfigParameter(name='choiceparam', choices=choices)
     self.db.add_param(p)
Exemplo n.º 3
0
 def test_add_parameters(self):
     params = [ConfigParameter('123'), ConfigParameter('456')]
     new_param = ConfigParameter('789')
     db = ConfigDatabase('test1',
                         description='test desc',
                         parameters=params)
     self.assertListEqual(db.parameters, params)
     db.add_param(new_param)
     self.assertListEqual(db.parameters, params + [
         new_param,
     ])
Exemplo n.º 4
0
 def test_repr(self):
     params = [
         ConfigParameter('123', type=''),
         ConfigParameter('456', type='')
     ]
     db = ConfigDatabase('test1',
                         description='test desc',
                         parameters=params)
     dbcopy = eval(repr(db))
     self.assertEqual(db.prog, dbcopy.prog)
     self.assertEqual(db.description, dbcopy.description)
     self.assertListEqual(db.parameters, dbcopy.parameters)
Exemplo n.º 5
0
 def test_load_plain_def(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='intparam', defaults=0)
     db.add_param(p)
     p = ConfigParameter(name='strparam', defaults='blah blah blah')
     db.add_param(p)
     p = ConfigParameter(name='noneparam')
     db.add_param(p)
     ans = loader.load(db)
     self.assertEqual(ans.intparam, 0)
     self.assertEqual(ans.strparam, 'blah blah blah')
     self.assertIsNone(ans.noneparam)
Exemplo n.º 6
0
 def test_no_dup_param(self):
     params = [
         ConfigParameter('123', type=int),
         ConfigParameter('456', defaults=9)
     ]
     new_param = ConfigParameter('123')
     db = ConfigDatabase('test1',
                         description='test desc',
                         parameters=params)
     self.assertListEqual(db.parameters, params)
     with self.assertRaises(NameError,
                            msg='duplicated parameter name "%s" found' %
                            (new_param.name, )):
         db.add_param(new_param)
     self.assertListEqual(db.parameters, params)
Exemplo n.º 7
0
 def test_load_type_cast(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='topParam1', type=int)
     db.add_param(p)
     p = ConfigParameter(name='topParam2', type=None)
     db.add_param(p)
     p = ConfigParameter(name='topParamx', type=float)
     db.add_param(p)
     ans = loader.load(db, self.config_file)
     self.assertEqual(type(ans.topParam1), int)
     self.assertEqual(ans.topParam1, 1)
     self.assertEqual(type(ans.topParam2), str)
     self.assertEqual(ans.topParam2, '"s-value"')
     self.assertFalse(hasattr(ans, 'topParamx'))
Exemplo n.º 8
0
 def test_load_default(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='topParam3', defaults='def-1')
     db.add_param(p)
     p = ConfigParameter(name='secParamx',
                         type=float,
                         defaults='0',
                         loader_opts={'conffile': {
                             'section': 'section3'
                         }})
     db.add_param(p)
     ans = loader.load(db, self.config_file, generate_default=True)
     self.assertEqual(ans.topParam3, '')
     self.assertEqual(type(ans.secParamx), float)
     self.assertEqual(ans.secParamx, float(0))
Exemplo n.º 9
0
 def test_load_plain_value(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='topParam1')
     db.add_param(p)
     p = ConfigParameter(name='topParam2')
     db.add_param(p)
     p = ConfigParameter(name='topParam3')
     db.add_param(p)
     p = ConfigParameter(name='topParamx')
     db.add_param(p)
     ans = loader.load(db, self.config_file)
     self.assertEqual(ans.topParam1, '1')
     self.assertEqual(ans.topParam2, '"s-value"')
     self.assertEqual(ans.topParam3, '')
     self.assertFalse(hasattr(ans, 'topParamx'))
Exemplo n.º 10
0
 def test_invalid_arg(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='param1', type=int)
     db.add_param(p)
     with self.assertRaises(SystemExit) as se:
         loader.load(db, ['--not-exist'])
     self.assertEqual(se.exception.code, 2)
Exemplo n.º 11
0
 def test_load_overwrite(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='param', defaults='defval')
     db.add_param(p)
     ans = loader.load(db)
     self.assertEqual(ans.param, 'defval')
     ans.param = 'modified'
     self.assertEqual(ans.param, 'modified')
Exemplo n.º 12
0
    def test_load_str(self):
        ds = ['    ', '#123', 'as_', '9 9']

        db = getdb()
        p = ConfigParameter(name='param1')
        db.add_param(p)
        loader = self.getloader()
        for s in ds:
            ans = loader.load(db, ['--param1', s])
            self.assertEqual(getattr(ans, p.name), s)
Exemplo n.º 13
0
 def test_load_with_type(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='param',
                         type=lambda x: int(x, 0),
                         defaults='0xffff')
     db.add_param(p)
     ans = loader.load(db)
     self.assertEqual(type(ans.param), int)
     self.assertEqual(ans.param, 0xffff)
Exemplo n.º 14
0
 def test_load_cur_platform(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='param',
                         defaults={
                             sys.platform: 'myval',
                             '*': 'otherval'
                         })
     db.add_param(p)
     ans = loader.load(db)
     self.assertEqual(ans.param, 'myval')
Exemplo n.º 15
0
 def test_load_false(self):
     cli_opts = {'action': 'store_false'}
     db = getdb()
     p = ConfigParameter(name='param1',
                         defaults=True,
                         loader_opts={'cli': cli_opts})
     db.add_param(p)
     loader = self.getloader()
     ans = loader.load(db, ['--param1'])
     self.assertFalse(getattr(ans, p.name))
     ans = loader.load(db, [], generate_default=True)
     self.assertTrue(getattr(ans, p.name))
Exemplo n.º 16
0
 def test_load_other_platform(self):
     defs = {'linux': 'linuxval', 'win': 'win32val', '*': 'otherval'}
     db = getdb()
     p = ConfigParameter(name='param', defaults=defs)
     db.add_param(p)
     loader = self.getloader('linux')
     ans = loader.load(db)
     self.assertEqual(ans.param, 'linuxval')
     loader = self.getloader('darwin')
     ans = loader.load(db)
     self.assertEqual(ans.param, 'otherval')
     loader = self.getloader('win')
     ans = loader.load(db)
     self.assertEqual(ans.param, 'win32val')
Exemplo n.º 17
0
    def test_name(self):
        db = getdb()
        cli_opts = {'flags': ['-p']}
        p = ConfigParameter(name='param1',
                            type=lambda s: int(s, 0),
                            loader_opts={'cli': cli_opts})
        db.add_param(p)
        loader = self.getloader()

        with self.assertRaises(SystemExit) as se:
            loader.load(db, ['--param1', '1'])
        self.assertEqual(se.exception.code, 2)

        ans = loader.load(db, ['-p', '1'])
        self.assertEqual(getattr(ans, p.name), 1)
Exemplo n.º 18
0
    def test_load_int(self):
        ds = [
            ('0', 0),
            ('0x1aedead0b', 0x1aedead0b),
            ('0b0011', 3),
            ('-9571293', -9571293),
        ]

        db = getdb()
        p = ConfigParameter(name='param1', type=lambda s: int(s, 0))
        db.add_param(p)
        loader = self.getloader()
        for s, d in ds:
            ans = loader.load(db, ['--param1', s])
            self.assertEqual(getattr(ans, p.name), d)
Exemplo n.º 19
0
 def test_load_count(self):
     cli_opts = {'action': 'count'}
     db = getdb()
     p = ConfigParameter(name='d',
                         defaults=0,
                         loader_opts={'cli': cli_opts})
     db.add_param(p)
     loader = self.getloader()
     ans = loader.load(db, ['-d'], generate_default=True)
     self.assertEqual(getattr(ans, p.name), 1)
     ans = loader.load(db, [], generate_default=True)
     self.assertEqual(getattr(ans, p.name), 0)
     ans = loader.load(db, ['-d', '-d', '-d'], generate_default=True)
     self.assertEqual(getattr(ans, p.name), 3)
     c = random.randint(0, 256)
     ans = loader.load(db, ['-' + 'd' * c], generate_default=True)
     self.assertEqual(getattr(ans, p.name), c)
Exemplo n.º 20
0
 def test_version(self):
     loader = self.getloader()
     db = getdb()
     p = ConfigParameter(name='notused',
                         loader_opts={
                             'cli': {
                                 'action': 'version',
                                 'flags': ('-v', '--version'),
                                 'version': 'test-version-1234'
                             }
                         })
     db.add_param(p)
     with self.assertRaises(SystemExit) as se:
         loader.load(db, ['-v'])
     self.assertEqual(se.exception.code, 0)
     with self.assertRaises(SystemExit) as se:
         loader.load(db, ['--version'])
     self.assertEqual(se.exception.code, 0)
Exemplo n.º 21
0
    def test_load_choice(self):
        good = ['c1', 'c3', 'c2']
        choices = ('c0', 'c1', 'c2', 'c3')
        db = getdb()
        p = ConfigParameter(name='param1', defaults='c1', choices=choices)
        db.add_param(p)
        loader = self.getloader()
        # try legal ones
        for s in good:
            ans = loader.load(db, ['--param1', s], generate_default=True)
            self.assertEqual(getattr(ans, p.name), s)
        # test use default
        ans = loader.load(db, [], generate_default=True)
        self.assertEqual(getattr(ans, p.name), good[0])

        # test illegal value
        with self.assertRaises(SystemExit) as se:
            loader.load(db, ['--param1', 'no-good'], generate_default=True)
        self.assertEqual(se.exception.code, 2)
Exemplo n.º 22
0
 def test_parameter_init(self):
     params = [ConfigParameter('123'), ConfigParameter('456')]
     db = ConfigDatabase('test1', parameters=params)
     self.assertListEqual(db.parameters, params)
Exemplo n.º 23
0
 def test_invalid_name(self):
     names = ['k b', '\tab', 's\na']
     for n in names:
         with self.assertRaises(ValueError,
                                msg="parameter name can't contain space"):
             ConfigParameter(name=n)
Exemplo n.º 24
0
 def test_name(self):
     names = ['klb', '1ab', 's#a']
     for n in names:
         p = ConfigParameter(name=n)
         self.assertEqual(p.name, n)
Exemplo n.º 25
0
 def test_init_param(self):
     p = ConfigParameter('test1')
     self.assertIsNotNone(p)
Exemplo n.º 26
0
 def parse_config(cls, param_dict):
     return DefaultClassConfig(param_dict, [
         ConfigParameter('elitism', int, 0),
         ConfigParameter('survival_threshold', float, 0.2),
         ConfigParameter('min_species_size', int, 2)
     ])