Mercurial > hgrepos > Python > libs > ConfigMix
changeset 407:1bec7f5fafe8
Unittests for the new base and rebind features
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Fri, 19 Nov 2021 13:28:08 +0100 |
| parents | 5286df5aeefe |
| children | 1aa4cab0169c |
| files | tests/test.py |
| diffstat | 1 files changed, 51 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test.py Fri Nov 19 13:27:41 2021 +0100 +++ b/tests/test.py Fri Nov 19 13:28:08 2021 +0100 @@ -1172,10 +1172,7 @@ def test_root(self): cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) - self.assertFalse(cfg.is_jail) - jcfg = cfg.jailed(root=u"tree1") - self.assertTrue(jcfg.is_jail) self.assertTrue(jcfg.getvarl(u"tree2", u"key5")) self.assertTrue(jcfg.getvarl_s(u"tree2", u"key5")) @@ -1383,6 +1380,57 @@ jcfg.getfirstvar_s, u"a.b", u"tree2.no-key") + def test_base_rebind(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + self.assertFalse(cfg.is_jail) + + jcfg = cfg.jailed(rootpath=[]) + self.assertTrue(jcfg.is_jail) + + self.assertTrue(jcfg.base is cfg) + + self.assertRaises( + KeyError, + jcfg.getvarl, + u"tree1", u"tree2", u"no-key") + self.assertEqual( + 0x20, + jcfg.getvar(u"tree1.key3")) + self.assertEqual( + u"in the root namespace", + jcfg.getvar("key1")) + + cfg2 = configmix.load(os.path.join(TESTDATADIR, "conf2.py")) + self.assertFalse(cfg2.is_jail) + + jcfg.rebind(cfg2) + self.assertTrue(jcfg.base is cfg2) + + self.assertRaises( + KeyError, + jcfg.getvar, + u"tree1.key3") + self.assertEqual( + u"the next value", + jcfg.getvar("key1")) + + def test_rebind_no_nesting(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + self.assertFalse(cfg.is_jail) + + jcfg1 = cfg.jailed(rootpath=[]) + self.assertTrue(jcfg1.is_jail) + jcfg2 = cfg.jailed(rootpath=[u"tree1"]) + self.assertTrue(jcfg2.is_jail) + + self.assertRaises( + TypeError, + jcfg1.rebind, + jcfg2) + + # base is not because rebind() failed + self.assertTrue(cfg is jcfg1.base) + if __name__ == "__main__": unittest.main()
