diff tests/test.py @ 93:84b9578cacce

Start with unit tests
author Franz Glasner <hg@dom66.de>
date Sun, 18 Mar 2018 14:44:41 +0100
parents
children a0ed95975980
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test.py	Sun Mar 18 14:44:41 2018 +0100
@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+
+import sys
+import os
+import unittest
+
+sys.path.insert(
+    0,
+    os.path.abspath(
+        os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))))
+
+import configmix
+import configmix.ini
+import configmix.yaml
+import configmix.py
+from configmix.compat import u
+
+
+TESTDATADIR = os.path.join(
+    os.path.abspath(os.path.dirname(__file__)),
+    "data")
+
+
+class T01Basic(unittest.TestCase):
+
+    """Check with low-level internal interfaces"""
+
+    def __check_types(self, cfg):
+        self.assertEqual(u("the value"),
+                         cfg.get("key1"))
+        self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
+        self.assertEqual(2, cfg.get("key2"))
+        self.assertEqual(5.7, cfg.get("key3"))
+        self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
+        self.assertTrue(cfg.get("key4"))
+        self.assertTrue(isinstance(cfg.get("key4"), bool))
+        self.assertFalse(cfg.get("key5"))
+        self.assertTrue(isinstance(cfg.get("key5"), bool))
+
+    def test01_ini_types(self):
+        cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
+        self.__check_types(cfg)
+
+    def test02_py_types(self):
+        cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py"))
+        self.__check_types(cfg)
+
+    def test03_yaml_types(self):
+        with open(os.path.join(TESTDATADIR, "conf1.yml"), "rt") as f:
+            cfg = configmix.yaml.safe_load(f)
+            self.__check_types(cfg)
+
+    def test04_py_export_all(self):
+        # When __all__ is given only it's keys are exported
+        cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf2.py"))
+        self.assertEqual(u("the next value"), cfg.get("key1"))
+        self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
+        self.assertTrue(cfg.get("key2") is None)
+
+    def test05_py_hide_private(self):
+        # When no __all__ is given all symbols with leading "_" are hidden
+        cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf3.py"))
+        self.assertEqual(u("the next value "), cfg.get("key1"))
+        self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
+        self.assertTrue(cfg.get("_key2") is None)
+
+
+if __name__ == "__main__":
+    unittest.main()