def test_overlay_config_9(self): """test namespace definition ini file""" n = config_manager.Namespace() n.other = config_manager.Namespace() n.other.add_option('t', 'tee', 'the t') n.d = config_manager.Namespace() n.d.add_option('a', 1, doc='the a') n.d.b = 17 n.c = config_manager.Namespace() n.c.add_option('extra', 3.14159, 'the x') n.c.add_option('string', 'fred', 'str') ini_data = """ [other] t=tea [d] # blank line to be ignored a=22 [c] extra = 2.0 string = from ini """ config = ConfigParser.RawConfigParser() config.readfp(io.BytesIO(ini_data)) e = DotDict() e.fred = DotDict() # should be ignored e.fred.t = 'T' # should be ignored e.d = DotDict() e.d.a = 16 e.c = DotDict() e.c.extra = 18.6 e.c.string = 'from environment' #fake_os_module = DotDict() #fake_os_module.environ = e #import configman.value_sources.for_mapping as fm #saved_os = fm.os #fm.os = fake_os_module saved_environ = os.environ os.environ = e try: c = config_manager.ConfigurationManager([n], [e, config, getopt], use_admin_controls=True, use_auto_help=False, argv_source=['--other.t', 'TTT', '--c.extra', '11.0']) finally: os.environ = saved_environ #fm.os = saved_os self.assertEqual(c.option_definitions.other.t.name, 't') self.assertEqual(c.option_definitions.other.t.value, 'TTT') self.assertEqual(c.option_definitions.d.a, n.d.a) self.assertEqual(type(c.option_definitions.d.b), config_manager.Option) self.assertEqual(c.option_definitions.d.a.value, 22) self.assertEqual(c.option_definitions.d.b.value, 17) self.assertEqual(c.option_definitions.d.b.default, 17) self.assertEqual(c.option_definitions.d.b.name, 'b') self.assertEqual(c.option_definitions.c.extra.name, 'extra') self.assertEqual(c.option_definitions.c.extra.doc, 'the x') self.assertEqual(c.option_definitions.c.extra.default, 3.14159) self.assertEqual(c.option_definitions.c.extra.value, 11.0) self.assertEqual(c.option_definitions.c.string.name, 'string') self.assertEqual(c.option_definitions.c.string.doc, 'str') self.assertEqual(c.option_definitions.c.string.default, 'fred') self.assertEqual(c.option_definitions.c.string.value, 'from ini')