Mercurial > hgrepos > Python > libs > ConfigMix
diff tests/test.py @ 395:0b3ffc34fa5c
Begin a jailed configuration with access to a sub-tree of the original configuration
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Thu, 18 Nov 2021 18:30:59 +0100 |
| parents | 0521e857c320 |
| children | b1f82b853290 |
line wrap: on
line diff
--- a/tests/test.py Wed Nov 10 09:43:15 2021 +0100 +++ b/tests/test.py Thu Nov 18 18:30:59 2021 +0100 @@ -1157,5 +1157,120 @@ self.assertEqual("value", v) +class T08Jailed(unittest.TestCase): + + def setUp(self): + pass + + def tearDown(self): + self._reset() + + def _reset(self): + configmix.clear_assoc() + for pat, fmode in configmix.DEFAULT_ASSOC: + configmix.set_assoc(pat, fmode) + + def test_root(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(root=u"tree1") + + self.assertTrue(jcfg.getvarl(u"tree2", u"key5")) + self.assertTrue(jcfg.getvarl_s(u"tree2", u"key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl(u"tree2", u"key4")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl_s(u"tree2", u"key4")) + + self.assertTrue(jcfg.getvar(u"tree2.key5")) + self.assertTrue(jcfg.getvar_s(u"tree2.key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar(u"tree2.key4")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar_s(u"tree2.key4")) + + def test_root2(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(root=u"tree1.tree2") + + self.assertTrue(jcfg.getvarl(u"key5")) + self.assertTrue(jcfg.getvarl_s(u"key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl(u"key4")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl_s(u"key4")) + + self.assertTrue(jcfg.getvar(u"key5")) + self.assertTrue(jcfg.getvar_s(u"key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar(u"key4")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar_s(u"key4")) + + def test_root_non_existing_raises(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + self.assertRaises(KeyError, cfg.jailed, root=u"tree-non-existing") + + def test_rootpath(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(rootpath=[u"tree1"]) + + self.assertTrue(jcfg.getvarl(u"tree2", u"key5")) + self.assertTrue(jcfg.getvarl_s(u"tree2", u"key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl_s(u"tree2", u"key4")) + + self.assertTrue(jcfg.getvar(u"tree2.key5")) + self.assertTrue(jcfg.getvar_s(u"tree2.key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar_s(u"tree2.key4")) + + def test_rootpath_non_existing_raises(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + self.assertRaises( + KeyError, cfg.jailed, rootpath=[u"tree-non-existing"]) + + def test_root_empty(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(rootpath=u"") + + self.assertTrue(jcfg.getvarl(u"tree1", u"tree2", u"key5")) + self.assertTrue(jcfg.getvarl_s(u"tree1", u"tree2", u"key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl_s(u"tree1", u"tree2", u"key4")) + + self.assertTrue(jcfg.getvar(u"tree1.tree2.key5")) + self.assertTrue(jcfg.getvar_s(u"tree1.tree2.key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar_s(u"tree1.tree2.key4")) + + def test_rootpath_empty(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(rootpath=tuple()) + + self.assertTrue(jcfg.getvarl(u"tree1", u"tree2", u"key5")) + self.assertTrue(jcfg.getvarl_s(u"tree1", u"tree2", u"key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvarl_s(u"tree1", u"tree2", u"key4")) + + self.assertTrue(jcfg.getvar(u"tree1.tree2.key5")) + self.assertTrue(jcfg.getvar_s(u"tree1.tree2.key5")) + self.assertEqual( + u"get this as `tree1.tree2.key4'", + jcfg.getvar_s(u"tree1.tree2.key4")) + + if __name__ == "__main__": unittest.main()
