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()