class BasicTestCase(unittest.TestCase): def setUp(self): self.x = ExtendedConfigParser() self.x.read('./test_cfg.ini') def test_basic(self): self.assertTrue(self.x is not None) def test_get_basic(self): self.assertEqual(self.x.get('sect2', 'key2'), 'val2') def test_get_basic_fail(self): self.assertRaises(NoOptionError, self.x.get, 'sect2', 'key4') def test_get_basic_fail2(self): self.assertRaises(NoSectionError, self.x.get, 'sect4', 'key3') def test_get_int(self): self.assertEqual(self.x.getint('sect1', 'key_int'), 1) def test_get_float(self): self.assertEqual(self.x.getfloat('sect1', 'key_float'), 1.24) def test_get_boolean_true(self): self.assertTrue(self.x.getboolean('sect1', 'key_bool1')) def test_get_boolean_on(self): self.assertTrue(self.x.getboolean('sect1', 'key_bool2')) def test_get_boolean_1(self): self.assertTrue(self.x.getboolean('sect1', 'key_bool3')) def test_get_boolean_yes(self): self.assertTrue(self.x.getboolean('sect1', 'key_bool4')) def test_get_boolean_false(self): self.assertFalse(self.x.getboolean('sect1', 'key_bool5')) def test_get_boolean_random(self): self.assertRaises(ValueError, self.x.getboolean, 'sect1', 'key_bool6') def test_default(self): self.assertEqual(self.x.get('sect3', 'key2'), 'default2') def test_default_section(self): default = OrderedDict([('key1[dev_plop_toto_stuff]', 'dev_plop_toto1_default'), ('key2', 'default2'), ('key3', 'default3'), ('key049', 'DEFAULT'), ('key049[dev]', 'DEFAULT_dev')]) self.assertEqual(self.x.default_section, default) def test_get_vars(self): self.assertEqual(self.x.get('sect1', 'key1', vars={'key1': 'deez'}), 'deez') def test_get_fallback(self): self.assertEqual(self.x.get('sect1', 'key173', fallback='deez'), 'deez') def test_has_section(self): self.assertTrue(self.x.has_section('sect2')) def test_has_section_advanced(self): self.assertTrue(self.x.has_section('sect1')) def test_has_section_fail(self): self.assertFalse(self.x.has_section('sect42')) def test_has_option(self): self.assertTrue(self.x.has_option('sect3', 'key3')) def test_has_option_config(self): self.assertTrue(self.x.has_option('sect3', 'key2', 'dev')) def test_has_option_config_fail(self): self.assertFalse(self.x.has_option('sect3', 'key2', 'scp')) def test_has_option_inheritance(self): self.assertTrue(self.x.has_option('sect1', 'key3')) def test_has_option_specificaction_fail(self): # Because config dependant self.assertFalse(self.x.has_option('sect3', 'key2')) def test_has_option_fail(self): self.assertFalse(self.x.has_option('sect3', 'key4')) def test_has_option_strict(self): self.assertTrue(self.x.has_option('sect3', 'key3', strict=True)) def test_has_option_strict_config(self): self.assertTrue(self.x.has_option('sect3', 'key2', 'dev', strict=True)) def test_has_option_strict_config_fail(self): self.assertFalse(self.x.has_option('sect3', 'key2', 'scp', strict=True)) def test_has_option_strict_inheritance(self): # Because strict self.assertFalse(self.x.has_option('sect1', 'key3', strict=True)) def test_has_option_strict_specificaction_fail(self): # Because config dependant self.assertFalse(self.x.has_option('sect3', 'key2', strict=True)) def test_has_option_strict_fail(self): self.assertFalse(self.x.has_option('sect3', 'key4', strict=True)) def test_has_option_config_ind(self): self.assertTrue(self.x.has_option('sect3', 'key3', cfg_ind=True)) def test_has_option_config_ind_inheritance(self): self.assertTrue(self.x.has_option('sect1', 'key3', cfg_ind=True)) def test_has_option_config_ind_specificaction(self): self.assertTrue(self.x.has_option('sect3', 'key2', cfg_ind=True)) def test_has_option_config_ind_fail(self): self.assertFalse(self.x.has_option('sect3', 'key4', cfg_ind=True)) def test_has_option_strict_config_ind(self): self.assertTrue(self.x.has_option('sect3', 'key3', cfg_ind=True, strict=True)) def test_has_option_strict_config_ind_inheritance(self): self.assertFalse(self.x.has_option('sect1', 'key3', cfg_ind=True, strict=True)) def test_has_option_strict_config_ind_specificaction(self): self.assertTrue(self.x.has_option('sect3', 'key2', cfg_ind=True, strict=True)) def test_has_option_strict_config_ind_fail(self): self.assertFalse(self.x.has_option('sect3', 'key4', cfg_ind=True, strict=True)) def test_options_basic(self): res = ['key1', 'key2', 'key2[dev]', 'key2[dev_plop]', 'key1[dev_plop_toto_stuff]', 'key2', 'key3', 'key049', 'key049[dev]'] self.assertEquals(self.x.options('sect2'), res) def test_options_inheritance(self): res = ['key1', 'key_int', 'key_bool1', 'key_bool2', 'key_bool3', 'key_bool4', 'key_bool5', 'key_bool6', 'key_float', 'key_list', 'key_list_int', 'key_list_bool', 'key_list_float', 'key1[dev]', 'key1', 'key2', 'key2[dev]', 'key2[dev_plop]', 'key1[dev_plop_toto]', 'key2[dev]', 'key3', 'key3[dev]', 'key3[toto]', 'key3[dev_plop]', 'key3[dev_plop_toto]', 'key1[dev_plop_toto_stuff]', 'key2', 'key3', 'key049', 'key049[dev]'] self.assertEquals(self.x.options('sect1'), res) def test_options_strict(self): res = ['key1', 'key_int', 'key_bool1', 'key_bool2', 'key_bool3', 'key_bool4', 'key_bool5', 'key_bool6', 'key_float', 'key_list', 'key_list_int', 'key_list_bool', 'key_list_float', 'key1[dev]'] self.assertEquals(self.x.options('sect1', strict=True), res) def test_options_strict_defaults(self): res = ['key1', 'key_int', 'key_bool1', 'key_bool2', 'key_bool3', 'key_bool4', 'key_bool5', 'key_bool6', 'key_float', 'key_list', 'key_list_int', 'key_list_bool', 'key_list_float', 'key1[dev]', 'key1[dev_plop_toto_stuff]', 'key2', 'key3', 'key049', 'key049[dev]'] self.assertEquals(self.x.options('sect1', strict=True, defaults=True), res) def test_options_strict_config_ind(self): res = ['key1', 'key_int', 'key_bool1', 'key_bool2', 'key_bool3', 'key_bool4', 'key_bool5', 'key_bool6', 'key_float', 'key_list', 'key_list_int', 'key_list_bool', 'key_list_float'] self.assertEquals(self.x.options('sect1', strict=True, cfg_ind=True), res) def test_options_strict_config_ind_defaults(self): res = ['key1', 'key_int', 'key_bool1', 'key_bool2', 'key_bool3', 'key_bool4', 'key_bool5', 'key_bool6', 'key_float', 'key_list', 'key_list_int', 'key_list_bool', 'key_list_float', 'key2', 'key3', 'key049'] self.assertEquals(self.x.options('sect1', strict=True, defaults=True, cfg_ind=True), res) def test_options_config_ind(self): res = ['key1', 'key_int', 'key_bool1', 'key_bool2', 'key_bool3', 'key_bool4', 'key_bool5', 'key_bool6', 'key_float', 'key_list', 'key_list_int', 'key_list_bool', 'key_list_float', 'key2', 'key3', 'key049'] self.assertEquals(self.x.options('sect1', cfg_ind=True).sort(), res.sort()) def test_items_basic(self): res = [('key1', 'val1_sect2'), ('key2', 'val2'), ('key2[dev]', 'dev2'), ('key2[dev_plop]', 'dev_plop2'), ('key1[dev_plop_toto_stuff]', 'dev_plop_toto1_default'), ('key2', 'default2'), ('key3', 'default3'), ('key049', 'DEFAULT'), ('key049[dev]', 'DEFAULT_dev')] res.sort() test = self.x.items('sect2') test.sort() self.assertEquals(test, res) def test_items_inheritance(self): res = [('key1', 'val1'), ('key_int', '1'), ('key_bool1', 'true'), ('key_bool2', 'on'), ('key_bool3', '1'), ('key_bool4', 'yes'), ('key_bool5', 'false'), ('key_bool6', 'random'), ('key_float', '1.24'), ('key_list', 'damn;dang;nabbit'), ('key_list_int', '1;7;3'), ('key_list_bool', 'true;false;true'), ('key_list_float', '0.96;1.73;6.82'), ('key1[dev]', 'dev1'), ('key1', 'val1_sect2'), ('key2', 'val2'), ('key2[dev]', 'dev2'), ('key2[dev_plop]', 'dev_plop2'), ('key1[dev_plop_toto]', 'dev_plop_toto1_sect3'), ('key2[dev]', 'dev2_sect3'), ('key3', 'val3'), ('key3[dev]', 'dev3'), ('key3[toto]', 'toto3'), ('key3[dev_plop]', 'dev_plop3'), ('key3[dev_plop_toto]', 'dev_plop_toto3'), ('key1[dev_plop_toto_stuff]', 'dev_plop_toto1_default'), ('key2', 'default2'), ('key3', 'default3'), ('key049', 'DEFAULT'), ('key049[dev]', 'DEFAULT_dev')] res.sort() test = self.x.items('sect1') test.sort() self.assertEquals(test, res) def test_items_strict_basic(self): res = [('key1', 'val1'), ('key_int', '1'), ('key_bool1', 'true'), ('key_bool2', 'on'), ('key_bool3', '1'), ('key_bool4', 'yes'), ('key_bool5', 'false'), ('key_bool6', 'random'), ('key_float', '1.24'), ('key_list', 'damn;dang;nabbit'), ('key_list_int', '1;7;3'), ('key_list_bool', 'true;false;true'), ('key_list_float', '0.96;1.73;6.82'), ('key1[dev]', 'dev1')] res.sort() test = self.x.items('sect1', strict=True) test.sort() self.assertEquals(test, res) def test_items_strict_defaults(self): res = [('key1', 'val1'), ('key_int', '1'), ('key_bool1', 'true'), ('key_bool2', 'on'), ('key_bool3', '1'), ('key_bool4', 'yes'), ('key_bool5', 'false'), ('key_bool6', 'random'), ('key_float', '1.24'), ('key_list', 'damn;dang;nabbit'), ('key_list_int', '1;7;3'), ('key_list_bool', 'true;false;true'), ('key_list_float', '0.96;1.73;6.82'), ('key1[dev]', 'dev1'), ('key1[dev_plop_toto_stuff]', 'dev_plop_toto1_default'), ('key2', 'default2'), ('key3', 'default3'), ('key049', 'DEFAULT'), ('key049[dev]', 'DEFAULT_dev')] res.sort() test = self.x.items('sect1', defaults=True, strict=True) test.sort() self.assertEquals(test, res) def test_items_all(self): res = [] for key in self.x._sections: res.append((key, SectionProxyExtended(self.x, key))) res.sort() test = self.x.items() test.sort() self.assertEquals(test, res) def test_items_strict_all(self): res = [] for key in self.x._sections: res.append((key, SectionProxyExtended(self.x, key))) res.sort() test = self.x.items(strict=True) test.sort() self.assertEquals(test, res) def test_items_vars(self): res = [('william', 'Overbeck'), ('key1', 'val1_sect2'), ('key2', 'val2'), ('key2[dev]', 'dev2'), ('key2[dev_plop]', 'dev_plop2'), ('key1[dev_plop_toto_stuff]', 'dev_plop_toto1_default'), ('key2', 'default2'), ('key3', 'default3'), ('key049', 'DEFAULT'), ('key049[dev]', 'DEFAULT_dev')] res.sort() test = self.x.items('sect2', vars={'William': 'Overbeck'}) test.sort() self.assertEquals(test, res) def test_items_vars_strict(self): res = [('william', 'Overbeck'), ('key1', 'val1_sect2'), ('key2', 'val2'), ('key2[dev]', 'dev2'), ('key2[dev_plop]', 'dev_plop2')] res.sort() test = self.x.items('sect2', vars={'William': 'Overbeck'}, strict=True) test.sort() self.assertEquals(test, res) def test_get_key_dict(self): self.assertEqual(self.x['sect2']['key2'], 'val2') def test_get_sect_dict_fail(self): self.assertRaises(KeyError, lambda: self.x['sect4']) def test_get_key_dict_fail(self): self.assertRaises(KeyError, lambda: self.x['sect2']['key42']) def test_has_section_strict(self): self.assertTrue(self.x.has_section('sect2', strict=True)) def test_has_section_strict_fail(self): self.assertFalse(self.x.has_section('sect1', strict=True)) def test_defaults(self): self.x = ExtendedConfigParser(defaults={'william': 'Overbeck'}) self.x.read('./test_cfg.ini') res = OrderedDict([('william', 'Overbeck')]) self.assertEquals(self.x.defaults(), res) def test_add_section(self): self.x.add_section('Jim Hoxworth') self.assertTrue(self.x.has_section('Jim Hoxworth')) self.assertEqual(self.x.get('Jim Hoxworth', 'key2'), 'default2') self.assertEqual(self.x['Jim Hoxworth']['key2'], 'default2') def test_read_file(self): self.x = ExtendedConfigParser() data = open('./test_cfg.ini', 'r') self.x.read_file(data) self.assertEqual(self.x.get('sect2', 'key2'), 'val2')