# HG changeset patch # User Franz Glasner # Date 1637324888 -3600 # Node ID 1bec7f5fafe893fb65f03f2b5441719653ff8d8f # Parent 5286df5aeefe8e7d726f99753c2790d127454658 Unittests for the new base and rebind features diff -r 5286df5aeefe -r 1bec7f5fafe8 tests/test.py --- 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()