def test_config_setitem_getitem(self): config = funconf.Config() config.set('foo', 'bar', False) self.assertFalse(config['foo_bar']) self.assertFalse(config.foo['bar']) self.assertRaises(ValueError, config.__setitem__, 'blah', 4) self.assertRaises(KeyError, config.__getitem__, 'blah')
def test_setting_attributes(self): config = funconf.Config() self.assertRaises(Exception, setattr, config, 'blah', 4) config.set('foo', 'bar', False) self.assertRaises(Exception, setattr, config.foo, 'blah', 4) config.foo.bar = True self.assertTrue(config.foo.bar)
def test_config_section_decorate(self): config = funconf.Config() config.set('foo', 'bar', False) @config.foo def func(**k): self.assertFalse(k['bar']) func()
def test_wrapped_goes_default(self): config = funconf.Config() config.set('foo', 'car', 3) @config.foo def main(bar, car): return bar self.assertEqual(main(2), 2)
def test_positional_or_keyword_with_no_option(self): #relates to issue #1 config = funconf.Config() config.set('foo', 'a', 3) @config.foo def bread(**k): return k self.assertRaises(TypeError, bread, 1)
def test_accessing_strict_attributes(self, mock_open): mock_open.return_value = StringIO(TEST_CONFIG) config = funconf.Config('mocked.conf') self.assertEqual(config.aaa.int, 4) config.aaa.int = 5 self.assertEqual(config.aaa.int, 5) self.assertRaises(funconf.ConfigAttributeError, getattr, config.aaa, 'nope')
def test_setting(self): config = funconf.Config() config.set('foo', 'bar', [34, 2, 5]) config.set('foo', 'moo', "shoe") config.set('foo', 'bar', 24.22323) config.set('bread', 'milk', True) config.set('bread', 'butter', False) self.assertTrue(config.bread.milk)
def test_config_decorate(self): config = funconf.Config() config.set('foo', 'bar', False) @config def func(**k): self.assertFalse(k['foo_bar']) func() func(foo_bar='f')
def test_is_lazy_flag(self): config = funconf.Config() @config(lazy=True) def func(foo=True): return foo self.assertEqual(func(foo="y"), True) @config.bar(lazy=True) def func(foo=True): return foo self.assertEqual(func(foo="y"), True)
def test_positional_or_keyword_with_var_args(self): #relates to issue #1 config = funconf.Config() config.set('foo', 'a', 3) @config.foo def bread(*b, **k): return b a = bread(4) self.assertEqual(a, (4, )) @config.foo def bread(a, **k): return a a = bread(4) @config.foo def bread(b, **k): return b a = bread(4) self.assertEqual(a, 4)
""" """ from multiprocessing import Process from threading import Thread import time import begin import funconf from virtualbox import pool config = funconf.Config(["tests/test_vm.conf", "test_vm.conf"]) def on_machine_state_changed(event): vbox = pool.VirtualBox() machine = vbox.find_machine(event.machine_id) print("Machine '%s' state has changed to %s" % (machine.name, event.state)) # TODO : BUG found in vboxapi ... # If a call to vboxapi.VirtualBoxManager is made in the main process # followed by another call in a forked multiprocess Process, the call # in the subprocess freezes and will not return... Bug in one of the # lower level APIs # if __name__ == '__main__': # vbox = pool.VirtualBox() # vbox.register_on_machine_state_changed(on_machine_state_changed) # Note: python3.x this maybe solved using set_start_method
import begin import funconf config = funconf.Config('demo.conf') @begin.subcommand @config.foo def foo(*a, **k): "This is the foo code" print("Foo got a=%s k=%s" % (a, k)) print("Config is:") print(config) @begin.subcommand @config.bread def bread(*a, **k): "This is the bread code" print("Bread got a=%s k=%s" % (a, k)) print("Config is:") print(config) @begin.subcommand @config def run(*a, **k): "This is the run command that controls all" print("Run got a=%s k=%s" % (a, k)) print("Config is:") print(config)
def test_not_strict_config(self): config = funconf.Config() self.assertTrue(dict(config.foo) == {})
def test_strict_config(self): config = funconf.Config(strict=True) self.assertRaises(funconf.ConfigAttributeError, getattr, config, 'nope')
def test_empty_section(self, mock_open): mock_open.return_value = StringIO(u("empty: 1")) config = funconf.Config('mocked.conf')
def test_delattr(self): config = funconf.Config() config.set('foo', 'bar', False) self.assertRaises(NotImplementedError, config.__delitem__, 'foo') self.assertRaises(NotImplementedError, config.foo.__delitem__, 'bar')
def test_print_config(self, mock_open): mock_open.return_value = StringIO(TEST_CONFIG) config = funconf.Config('mocked.conf') as_str = str(config) self.assertEqual(len(config), 8) self.assertEqual(len(config.bbb), 4)
def test_reserved_words(self): config = funconf.Config() self.assertRaises(ValueError, config.set, 'set', 'foo', True) config.set('foo', 'bar', False) self.assertRaises(ValueError, config.set, 'foo', 'items', True)
def test_lazy_cast_not_in_config(self): config = funconf.Config() @config def main(foo=True): return foo self.assertTrue(main('t') is True)
def test_load_string(self): config = funconf.Config() config.load(TEST_CONFIG)
import unittest import os import time import contextlib import shlex import os import funconf import virtualbox from virtualbox import library config = funconf.Config(['tests/test_vm.conf', 'test_vm.conf']) username = config.machine.username password = config.machine.password class TestTestVM(unittest.TestCase): def test_lock_vm(self): """create a locked session for the test_vm machine""" vbox = virtualbox.VirtualBox() # Assert that we can create a lock over a machine vm = vbox.find_machine('test_vm') s = virtualbox.Session() vm.lock_machine(s, virtualbox.library.LockType.shared) self.assertTrue(s.state == virtualbox.library.SessionState.locked) # Assert we can only lock a session object once self.assertRaises(library.VBoxErrorInvalidObjectState, vm.lock_machine, s, virtualbox.library.LockType.shared)
def test_dirty(self): config = funconf.Config() config.set('foo', 'bar', False) self.assertTrue(config.foo.dirty) self.assertFalse(config.foo.dirty)
def test_dir(self): config = funconf.Config() config.set('foo', 'bar', False) self.assertTrue('foo' in dir(config)) self.assertTrue('bar' in dir(config.foo))
import bottle import begin import funconf @bottle.route('/hello') def hello(): return "Hello World!" config = funconf.Config(['webapp.conf', '~/.webapp.conf']) @begin.start(env_prefix="WEBAPP_") @config.web def main(host='127.0.0.1', port=8080, debug=False): print(config) bottle.run(host=host, port=port, debug=debug)
def test_file_doesnt_exist(self): funconf.Config(['blaoo.con'])