Mercurial > hgrepos > Python > libs > ConfigMix
diff tests/test.py @ 144:7e6ec99d5ff5
Allow comments as keys and filter them by default
| author | Franz Glasner <hg@dom66.de> |
|---|---|
| date | Fri, 13 Apr 2018 09:51:02 +0200 |
| parents | d8d47893df5b |
| children | bbf47bfb48a2 |
line wrap: on
line diff
--- a/tests/test.py Mon Apr 09 09:35:04 2018 +0200 +++ b/tests/test.py Fri Apr 13 09:51:02 2018 +0200 @@ -43,6 +43,22 @@ self.assertEqual(u("Umlaute: ÄÖÜäöüß"), cfg.get("key7")) + def __check_comment(self, cfg): + # Check comments: low level comments are *not* filtered + self.assertEqual(u("Comment 1"), cfg.get("__comment1")) + self.assertEqual(u("Comment no 2"), cfg.get("__comment2")) + + def __check_no_comment(self, cfg): + + def _c(name): + def _f(): + cfg[u(name)] + return _f + + # Variables with leading underscores are *not* imported by default + self.assertRaises(KeyError, _c("__comment1")) + self.assertRaises(KeyError, _c("__comment2")) + def __check_tree(self, cfg): self.assertEqual(u("in the root namespace"), cfg.get("key1")) @@ -57,10 +73,12 @@ def test01_ini_types(self): cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) self.__check_types(cfg) + self.__check_comment(cfg) def test02_py_types(self): cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py")) self.__check_types(cfg) + self.__check_no_comment(cfg) def test03_yaml_types(self): with io.open(os.path.join(TESTDATADIR, "conf1.yml"), "rt", @@ -69,11 +87,13 @@ if configmix.yaml.OrderedDict: self.assertTrue(isinstance(cfg, configmix.yaml.OrderedDict)) self.__check_types(cfg) + self.__check_comment(cfg) def test04_json_types(self): cfg = configmix.json.load(os.path.join(TESTDATADIR, "conf1.json")) self.assertTrue(isinstance(cfg, configmix.json.DictImpl)) self.__check_types(cfg) + self.__check_comment(cfg) def test05_py_export_all(self): # When __all__ is given only it's keys are exported @@ -218,18 +238,35 @@ self.assertRaises(KeyError, _look) + def test05_comments(self): + cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), + os.path.join(TESTDATADIR, "conf21.yml"), + os.path.join(TESTDATADIR, "conf22.ini"), + os.path.join(TESTDATADIR, "conf23.json")) + + def _c(name): + def _f(): + cfg.getvar_s(name) + return _f + + # Variables with leading underscores are *not* imported by default + self.assertEqual(0o0027, int(cfg.getvar_s("process.umask"), 0)) + self.assertRaises(KeyError, _c("process.__doc1")) + self.assertRaises(KeyError, _c("db.__comment1")) + self.assertRaises(KeyError, _c("db.user.__doc2")) + class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): def setUp(self): self._load = configmix.load - def test05_identity(self): + def test06_identity(self): cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) cfg2 = configmix.merge(cfg, None) self.assertEqual(id(cfg), id(cfg2)) - def test06_identity(self): + def test07_identity(self): cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) cfg2 = configmix.merge(cfg, {}) self.assertEqual(id(cfg), id(cfg2)) @@ -240,12 +277,12 @@ def setUp(self): self._load = configmix.safe_load - def test05_deepcopy(self): + def test06_deepcopy(self): cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) cfg2 = configmix.safe_merge(cfg, None) self.assertNotEqual(id(cfg), id(cfg2)) - def test06_deepcopy(self): + def test07_deepcopy(self): cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) cfg2 = configmix.safe_merge(cfg, {}) self.assertNotEqual(id(cfg), id(cfg2)) @@ -290,7 +327,7 @@ def _g(): return cfg.getvar_s("key7") - + self.assertRaises(KeyError, _g)
