diff tests/test.py @ 398:b1f82b853290

Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 19 Nov 2021 01:39:18 +0100
parents 0b3ffc34fa5c
children 6a5aea02f3d0
line wrap: on
line diff
--- a/tests/test.py	Thu Nov 18 22:29:05 2021 +0100
+++ b/tests/test.py	Fri Nov 19 01:39:18 2021 +0100
@@ -1271,6 +1271,115 @@
             u"get this as `tree1.tree2.key4'",
             jcfg.getvar_s(u"tree1.tree2.key4"))
 
+    def test_rootpath_getfirstvar_nonexisting(self):
+        cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
+        jcfg = cfg.jailed(rootpath=(u"tree1",))
+
+        self.assertIsNone(jcfg.getfirstvarl(
+            *[(u"a", u"b"),
+              (u"tree2", u"no-key")],
+            default=None))
+        self.assertIsNone(jcfg.getfirstvarl_s(
+            *[(u"a", u"b"),
+              (u"tree2", u"no-key")],
+            default=None))
+        self.assertIsNone(jcfg.getfirstvar(
+            u"a.b", u"tree2.no-key",
+            default=None))
+        self.assertIsNone(jcfg.getfirstvar_s(
+            u"a.b", u"tree2.no-key",
+            default=None))
+
+    def test_rootpath_getfirstvar_raising(self):
+        cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
+        jcfg = cfg.jailed(rootpath=(u"tree1",))
+
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvarl,
+            (u"a", u"b"),
+            (u"tree2", u"no-key"))
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvarl_s,
+            (u"a", u"b"),
+            (u"tree2", u"no-key"))
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvar,
+            u"a.b", u"tree2.no-key")
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvar_s,
+            u"a.b", u"tree2.no-key")
+
+    def test_rootpath_getfirstvar_existing(self):
+        cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
+        jcfg = cfg.jailed(rootpath=(u"tree1",))
+
+        self.assertEqual(
+            u"get this as `tree1.tree2.key4'",
+            jcfg.getfirstvarl(
+                *[(u"a", u"b"),
+                  (u"tree2", u"key4")]))
+        self.assertEqual(
+            0x20,
+            jcfg.getfirstvarl_s(
+                *[(u"a", u"b"),
+                  (u"key3", ),
+                  (u"tree2", u"key4")]))
+        self.assertEqual(
+            0x20,
+            jcfg.getfirstvar(
+                u"key1", u"key3"))
+        self.assertEqual(
+            u"get this as `tree1.tree2.key4'",
+            jcfg.getfirstvar_s(
+                u"a.b", u"tree2.key4", u"tree2.key5"))
+
+    def test_root_getfirstvar_nonexisting(self):
+        cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
+        jcfg = cfg.jailed(root=u"tree1")
+
+        self.assertIsNone(jcfg.getfirstvarl(
+            *[(u"a", u"b"),
+              (u"tree2", u"no-key")],
+            default=None))
+        self.assertIsNone(jcfg.getfirstvarl_s(
+            *[(u"a", u"b"),
+              (u"tree2", u"no-key")],
+            default=None))
+        self.assertIsNone(jcfg.getfirstvarl_s(
+            *[(u"a", u"b"),
+              (u"tree2", u"no-key")],
+            default=None))
+        self.assertIsNone(jcfg.getfirstvar_s(
+            u"a.b", u"tree2.no-key",
+            default=None))
+
+    def test_root_getfirstvar_raising(self):
+        cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
+        jcfg = cfg.jailed(root=u"tree1")
+
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvarl,
+            (u"a", u"b"),
+            (u"tree2", u"no-key"))
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvarl_s,
+            (u"a", u"b"),
+            (u"tree2", u"no-key"))
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvar,
+            u"a.b", u"tree2.no-key")
+        self.assertRaises(
+            KeyError,
+            jcfg.getfirstvar_s,
+            u"a.b", u"tree2.no-key")
+
 
 if __name__ == "__main__":
     unittest.main()