Mercurial > hgrepos > Python > libs > ConfigMix
view tests/test.py @ 105:1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Fri, 23 Mar 2018 17:43:36 +0100 |
| parents | 1b4d95f60650 |
| children | 057d87d030f1 |
line wrap: on
line source
# -*- 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)) self.assertEqual(255, cfg.get("key6")) def __check_tree(self, cfg): self.assertEqual(u("in the root namespace"), cfg.get("key1")) self.assertEqual(u("in the root namespace -- too"), cfg.get("key2")) self.assertEqual(32, cfg["tree1"]["key3"]) self.assertEqual(u("get this as `tree1.tree2.key4'"), cfg["tree1"]["tree2"]["key4"]) self.assertTrue(cfg["tree1"]["tree2"]["key5"]) 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) def test06_ini_tree(self): cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf10.ini")) self.__check_tree(cfg) def test07_py_tree(self): cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf10.py")) self.__check_tree(cfg) def test08_yaml_tree(self): with open(os.path.join(TESTDATADIR, "conf10.yml"), "rt") as f: cfg = configmix.yaml.safe_load(f) self.__check_tree(cfg) class T02LoadAndMerge(unittest.TestCase): def test01_load(self): cfg = configmix.load( os.path.join(TESTDATADIR, "conf20.yml"), os.path.join(TESTDATADIR, "conf21.yml")) self.assertEqual(u("the_database_user"), cfg.getvar_s("db.user.name")) self.assertEqual(u("the-database-password"), cfg.getvar_s("db.user.pwd")) tmpdir = cfg.getvar_s("tmpdir") if os.name == 'nt': self.assertFalse(u('/') in tmpdir) self.assertEqual(os.path.normpath( os.path.abspath(os.path.join(os.getcwd(), "tmp"))), tmpdir) self.assertEqual(u("anotherhost"), cfg.getvar_s("db.locinfo.ro.hostname")) self.assertEqual(u("localhost"), cfg.getvar_s("db.locinfo.rw.hostname")) self.assertEqual(5432, cfg.getvar_s("db.locinfo.ro.port")) url = cfg.getvar_s("db.engines.ro.url") self.assertEqual( u("postgresql+psycopg2://the_database_user:the-database-password@anotherhost:5432/my_database_catalog"), url) def test02_load_with_ini(self): cfg = configmix.load( os.path.join(TESTDATADIR, "conf20.yml"), os.path.join(TESTDATADIR, "conf21.yml"), os.path.join(TESTDATADIR, "conf22.ini")) self.assertEqual(u("the_database_user_2"), cfg.getvar_s("db.user.name")) self.assertEqual(u("the-database-password-2"), cfg.getvar_s("db.user.pwd")) tmpdir = cfg.getvar_s("tmpdir") self.assertEqual(u(os.getcwd()) + u("/tmp\\2"), tmpdir) self.assertEqual(u("3rd-host"), cfg.getvar_s("db.locinfo.ro.hostname")) self.assertEqual(u("localhost"), cfg.getvar_s("db.locinfo.rw.hostname")) self.assertEqual(5432, cfg.getvar_s("db.locinfo.ro.port")) url = cfg.getvar_s("db.engines.ro.url") self.assertEqual( u("postgresql+psycopg2://the_database_user_2:the-database-password-2@3rd-host:5432/my_database_catalog"), url) if __name__ == "__main__": unittest.main()
