diff tests/test.py @ 381:fe3dfd687621

Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 10 Nov 2021 01:37:36 +0100
parents 0c65aac81807
children 0521e857c320
line wrap: on
line diff
--- a/tests/test.py	Tue Nov 09 21:58:05 2021 +0100
+++ b/tests/test.py	Wed Nov 10 01:37:36 2021 +0100
@@ -581,6 +581,130 @@
                                   "db.non.existing.key2",
                                   default=u("true")))
 
+    def test27_getfirstvarl_nonexisting(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
+        self.assertRaises(
+            KeyError,
+            cfg.getfirstvarl,
+            [["db", "non", "existing", "key"],
+             ("db", "non", "existing", "key2")])
+
+    def test27b_getfirstvarl_nonexisting(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
+        self.assertRaises(
+            KeyError,
+            cfg.getfirstvarl,
+            [{"namespace": None, "path": ["db", "non", "existing", "key"]},
+             {"namespace": None, "path": ["db", "non", "existing", "key2"]}])
+
+    def test28_getfirstvarl_nonexisting(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
+        self.assertIsNone(cfg.getfirstvarl(
+            [["db", "non", "existing", "key"],
+             ("db", "non", "existing", "key2")],
+            default=None))
+
+    def test28b_getfirstvarl_nonexisting(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
+        self.assertIsNone(cfg.getfirstvarl(
+            [{"namespace": None, "path": ["db", "non", "existing", "key"]},
+             {"namespace": None, "path": ("db", "non", "existing", "key2")}],
+            default=None))
+
+    def test29_getfirstvarl_existing(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
+        self.assertEqual(
+            "test-configmix",
+            cfg.getfirstvarl(*(("intl", "domain"),)))
+        self.assertEqual(
+            "test-configmix",
+            cfg.getfirstvarl(*(("intl", "domain"), ("intl", "fallback"))))
+        self.assertEqual(
+            "de",
+            cfg.getfirstvarl(*[["intl", "fallback"],
+                               ["intl", "domain"]],
+                               default=None))
+        self.assertEqual(
+            "de",
+            cfg.getfirstvarl(*[["intl", "non", "existing"],
+                               ["intl", "fallback"]],
+                               default=None))
+
+    def test29b_getfirstvarl_existing(self):
+        cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
+        self.assertEqual(
+            "test-configmix",
+            cfg.getfirstvarl(*({"namespace": None,
+                                "path": ("intl", "domain")},)))
+        self.assertEqual(
+            "test-configmix",
+            cfg.getfirstvarl(*({"namespace": None,
+                                "path": ("intl", "domain")},
+                               {"namespace": None, "path": ("intl", "fallback")})))
+        self.assertEqual(
+            "de",
+            cfg.getfirstvarl(*[{"namespace": None, "path": ["intl", "fallback"]},
+                               {"namespace": None, "path": ["intl", "domain"]}],
+                               default=None))
+        self.assertEqual(
+            "de",
+            cfg.getfirstvarl(*[{"namespace": None, "path": ["intl", "non", "existing"]},
+                               {"namespace": None, "path": ["intl", "fallback"]}],
+                               default=None))
+
+    def test30_getfirstvarl_s_existing(self):
+        cfg = self._load(
+            os.path.join(TESTDATADIR, "conf20.yml"),
+            os.path.join(TESTDATADIR, "conf21.yml"))
+        self.assertEqual(
+            os.getcwd()+"/locale",
+            cfg.getfirstvarl_s(*[["intl", "non", "existing"],
+                                 ["intl", "localedir"]]))
+        self.assertEqual(
+            os.getcwd()+"/locale",
+            cfg.getfirstvarl_s(*[["intl", "localedir"], ["intl", "non", "existing"]]))
+
+    def test30b_getfirstvarl_s_existing(self):
+        cfg = self._load(
+            os.path.join(TESTDATADIR, "conf20.yml"),
+            os.path.join(TESTDATADIR, "conf21.yml"))
+        self.assertEqual(
+            os.getcwd()+"/locale",
+            cfg.getfirstvarl_s(*[{"namespace": None, "path": ["intl", "non", "existing"]},
+                                 {"namespace": None, "path": ["intl", "localedir"]}]))
+        self.assertEqual(
+            os.getcwd()+"/locale",
+            cfg.getfirstvarl_s(*[{"namespace": None, "path": ["intl", "localedir"]}, {"namespace": None, "path": ["intl", "non", "existing"]}]))
+
+    def test31_getfirstvar_s_non_existing(self):
+        cfg = self._load(
+            os.path.join(TESTDATADIR, "conf20.yml"),
+            os.path.join(TESTDATADIR, "conf21.yml"))
+        self.assertIsNone(
+            cfg.getfirstvarl_s(
+                *[["intl", "non", "existing"], ["intl", "non", "existing2"]],
+                default=None))
+        self.assertRaises(
+            KeyError,
+            cfg.getfirstvarl_s,
+            ["intl" ,"non", "existing"],
+            ["intl", "non", "existing2"])
+
+    def test31b_getfirstvar_s_non_existing(self):
+        cfg = self._load(
+            os.path.join(TESTDATADIR, "conf20.yml"),
+            os.path.join(TESTDATADIR, "conf21.yml"))
+        self.assertIsNone(
+            cfg.getfirstvarl_s(
+                *[{"namespace": None, "path": ["intl", "non", "existing"]},
+                  {"namespace": None, "path": ["intl", "non", "existing2"]}],
+                default=None))
+        self.assertRaises(
+            KeyError,
+            cfg.getfirstvarl_s,
+            {"namespace": None, "path": ["intl" ,"non", "existing"]},
+            {"namespace": None, "path": ["intl", "non", "existing2"]})
+
 
 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):