def test_layered_subsections(self): defaults = OrderedDict( (('force', False), ('home', 'thisdata'), ('loglevel', 'INFO'))) cmdline = ['--mymodule-home=thatdata', '--mymodule-force'] cfg = LayeredConfig(Defaults(defaults), Commandline(cmdline), cascade=True) self.assertEqual(cfg.mymodule.force, True) self.assertEqual(cfg.mymodule.home, 'thatdata') self.assertEqual(cfg.mymodule.loglevel, 'INFO') # second test is more difficult: the lower-priority Defaults # source only contains a subsection, while the higher-priority # Commandline source contains no such subsection. Our # sub-LayeredConfig object will only have a Defaults source, # not a Commandline source (which will cause the # __getattribute__ lookup_resource to look in the Defaults # object in the sub-LayeredConfig object, unless we do # something smart. defaults = {'mymodule': defaults} cmdline = ['--home=thatdata', '--force'] o = Commandline(cmdline) o.subsection("mymodule").keys() cfg = LayeredConfig(Defaults(defaults), Commandline(cmdline), cascade=True) self.assertEqual(cfg.mymodule.force, True) self.assertEqual(cfg.mymodule.home, 'thatdata') self.assertEqual(cfg.mymodule.loglevel, 'INFO') self.assertEqual(['force', 'home', 'loglevel'], list(cfg.mymodule))
def test_layered_subsections(self): defaults = OrderedDict((('force', False), ('home', 'thisdata'), ('loglevel', 'INFO'))) cmdline = ['--mymodule-home=thatdata', '--mymodule-force'] cfg = LayeredConfig(Defaults(defaults), Commandline(cmdline), cascade=True) self.assertEqual(cfg.mymodule.force, True) self.assertEqual(cfg.mymodule.home, 'thatdata') self.assertEqual(cfg.mymodule.loglevel, 'INFO') # second test is more difficult: the lower-priority Defaults # source only contains a subsection, while the higher-priority # Commandline source contains no such subsection. Our # sub-LayeredConfig object will only have a Defaults source, # not a Commandline source (which will cause the # __getattribute__ lookup_resource to look in the Defaults # object in the sub-LayeredConfig object, unless we do # something smart. defaults = {'mymodule': defaults} cmdline = ['--home=thatdata', '--force'] o = Commandline(cmdline) o.subsection("mymodule").keys() cfg = LayeredConfig(Defaults(defaults), Commandline(cmdline), cascade=True) self.assertEqual(cfg.mymodule.force, True) self.assertEqual(cfg.mymodule.home, 'thatdata') self.assertEqual(cfg.mymodule.loglevel, 'INFO') self.assertEqual(['force', 'home', 'loglevel'], list(cfg.mymodule))