Mercurial > hgrepos > Python > libs > ConfigMix
annotate tests/test.py @ 120:ba5970a2dcef
The default file encoding when reading INI style files with configmix.ini.load() is now "UTF-8".
Added unittests for proper Unicode handling.
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Thu, 29 Mar 2018 12:38:52 +0200 |
| parents | eefde3288fb8 |
| children | 21d92ff8cf31 |
| rev | line source |
|---|---|
| 93 | 1 # -*- coding: utf-8 -*- |
| 2 | |
| 3 import sys | |
| 4 import os | |
| 5 import unittest | |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
6 import platform |
|
119
eefde3288fb8
FIX: YAML-file streams must be opened as UTF-8 text files; otherwise double encoding occurs for non-Unicode locales (e.g. Windows)
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
116
diff
changeset
|
7 import io |
| 93 | 8 |
| 9 sys.path.insert( | |
| 10 0, | |
| 11 os.path.abspath( | |
| 12 os.path.normpath(os.path.join(os.path.dirname(__file__), "..")))) | |
| 13 | |
| 14 import configmix | |
| 15 import configmix.ini | |
| 16 import configmix.yaml | |
| 17 import configmix.py | |
| 18 from configmix.compat import u | |
| 19 | |
| 20 | |
| 21 TESTDATADIR = os.path.join( | |
| 22 os.path.abspath(os.path.dirname(__file__)), | |
| 23 "data") | |
| 24 | |
| 25 | |
| 26 class T01Basic(unittest.TestCase): | |
| 27 | |
| 28 """Check with low-level internal interfaces""" | |
| 29 | |
| 30 def __check_types(self, cfg): | |
| 31 self.assertEqual(u("the value"), | |
| 32 cfg.get("key1")) | |
| 33 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 34 self.assertEqual(2, cfg.get("key2")) | |
| 35 self.assertEqual(5.7, cfg.get("key3")) | |
| 36 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 37 self.assertTrue(cfg.get("key4")) | |
| 38 self.assertTrue(isinstance(cfg.get("key4"), bool)) | |
| 39 self.assertFalse(cfg.get("key5")) | |
| 40 self.assertTrue(isinstance(cfg.get("key5"), bool)) | |
| 95 | 41 self.assertEqual(255, cfg.get("key6")) |
|
120
ba5970a2dcef
The default file encoding when reading INI style files with configmix.ini.load() is now "UTF-8".
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
119
diff
changeset
|
42 self.assertEqual(u("Umlaute: ÄÖÜäöüß"), |
|
ba5970a2dcef
The default file encoding when reading INI style files with configmix.ini.load() is now "UTF-8".
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
119
diff
changeset
|
43 cfg.get("key7")) |
| 93 | 44 |
|
97
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
45 def __check_tree(self, cfg): |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
46 self.assertEqual(u("in the root namespace"), |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
47 cfg.get("key1")) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
48 self.assertEqual(u("in the root namespace -- too"), |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
49 cfg.get("key2")) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
50 self.assertEqual(32, |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
51 cfg["tree1"]["key3"]) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
52 self.assertEqual(u("get this as `tree1.tree2.key4'"), |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
53 cfg["tree1"]["tree2"]["key4"]) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
54 self.assertTrue(cfg["tree1"]["tree2"]["key5"]) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
55 |
| 93 | 56 def test01_ini_types(self): |
| 57 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) | |
| 58 self.__check_types(cfg) | |
| 59 | |
| 60 def test02_py_types(self): | |
| 61 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py")) | |
| 62 self.__check_types(cfg) | |
| 63 | |
| 64 def test03_yaml_types(self): | |
|
119
eefde3288fb8
FIX: YAML-file streams must be opened as UTF-8 text files; otherwise double encoding occurs for non-Unicode locales (e.g. Windows)
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
116
diff
changeset
|
65 with io.open(os.path.join(TESTDATADIR, "conf1.yml"), "rt", |
|
eefde3288fb8
FIX: YAML-file streams must be opened as UTF-8 text files; otherwise double encoding occurs for non-Unicode locales (e.g. Windows)
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
116
diff
changeset
|
66 encoding="utf-8") as f: |
| 93 | 67 cfg = configmix.yaml.safe_load(f) |
| 68 self.__check_types(cfg) | |
| 69 | |
| 70 def test04_py_export_all(self): | |
| 71 # When __all__ is given only it's keys are exported | |
| 72 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf2.py")) | |
| 73 self.assertEqual(u("the next value"), cfg.get("key1")) | |
| 74 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 75 self.assertTrue(cfg.get("key2") is None) | |
| 76 | |
| 77 def test05_py_hide_private(self): | |
| 78 # When no __all__ is given all symbols with leading "_" are hidden | |
| 79 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf3.py")) | |
| 80 self.assertEqual(u("the next value "), cfg.get("key1")) | |
| 81 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 82 self.assertTrue(cfg.get("_key2") is None) | |
| 83 | |
|
97
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
84 def test06_ini_tree(self): |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
85 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf10.ini")) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
86 self.__check_tree(cfg) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
87 |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
88 def test07_py_tree(self): |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
89 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf10.py")) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
90 self.__check_tree(cfg) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
91 |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
92 def test08_yaml_tree(self): |
|
119
eefde3288fb8
FIX: YAML-file streams must be opened as UTF-8 text files; otherwise double encoding occurs for non-Unicode locales (e.g. Windows)
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
116
diff
changeset
|
93 with io.open(os.path.join(TESTDATADIR, "conf10.yml"), "rt", |
|
eefde3288fb8
FIX: YAML-file streams must be opened as UTF-8 text files; otherwise double encoding occurs for non-Unicode locales (e.g. Windows)
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
116
diff
changeset
|
94 encoding="utf-8") as f: |
|
97
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
95 cfg = configmix.yaml.safe_load(f) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
96 self.__check_tree(cfg) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
97 |
| 93 | 98 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
99 class _T02MixinLoadAndMerge: |
|
105
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
100 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
101 def test01_load(self): |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
102 cfg = self._load( |
|
105
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
103 os.path.join(TESTDATADIR, "conf20.yml"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
104 os.path.join(TESTDATADIR, "conf21.yml")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
105 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
106 self.assertEqual(u("the_database_user"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
107 cfg.getvar_s("db.user.name")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
108 self.assertEqual(u("the-database-password"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
109 cfg.getvar_s("db.user.pwd")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
110 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
111 tmpdir = cfg.getvar_s("tmpdir") |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
112 if os.name == 'nt': |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
113 self.assertFalse(u('/') in tmpdir) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
114 self.assertEqual(os.path.normpath( |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
115 os.path.abspath(os.path.join(os.getcwd(), "tmp"))), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
116 tmpdir) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
117 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
118 self.assertEqual(u("anotherhost"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
119 cfg.getvar_s("db.locinfo.ro.hostname")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
120 self.assertEqual(u("localhost"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
121 cfg.getvar_s("db.locinfo.rw.hostname")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
122 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
123 self.assertEqual(5432, cfg.getvar_s("db.locinfo.ro.port")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
124 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
125 url = cfg.getvar_s("db.engines.ro.url") |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
126 self.assertEqual( |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
127 u("postgresql+psycopg2://the_database_user:the-database-password@anotherhost:5432/my_database_catalog"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
128 url) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
129 |
|
109
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
130 self.assertEqual(u("not a list any more"), |
|
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
131 cfg.getvar_s("test.List")) |
|
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
132 |
|
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
133 self.assertEqual(list(range(0, 3)), |
|
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
134 cfg.getvar_s("test.Str")) |
|
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
135 |
|
105
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
136 def test02_load_with_ini(self): |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
137 cfg = self._load( |
|
105
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
138 os.path.join(TESTDATADIR, "conf20.yml"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
139 os.path.join(TESTDATADIR, "conf21.yml"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
140 os.path.join(TESTDATADIR, "conf22.ini")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
141 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
142 self.assertEqual(u("the_database_user_2"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
143 cfg.getvar_s("db.user.name")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
144 self.assertEqual(u("the-database-password-2"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
145 cfg.getvar_s("db.user.pwd")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
146 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
147 tmpdir = cfg.getvar_s("tmpdir") |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
148 self.assertEqual(u(os.getcwd()) + u("/tmp\\2"), tmpdir) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
149 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
150 self.assertEqual(u("3rd-host"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
151 cfg.getvar_s("db.locinfo.ro.hostname")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
152 self.assertEqual(u("localhost"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
153 cfg.getvar_s("db.locinfo.rw.hostname")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
154 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
155 self.assertEqual(5432, cfg.getvar_s("db.locinfo.ro.port")) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
156 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
157 url = cfg.getvar_s("db.engines.ro.url") |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
158 self.assertEqual( |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
159 u("postgresql+psycopg2://the_database_user_2:the-database-password-2@3rd-host:5432/my_database_catalog"), |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
160 url) |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
161 |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
162 def test03_namespace(self): |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
163 cfg = self._load( |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
164 os.path.join(TESTDATADIR, "conf20.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
165 os.path.join(TESTDATADIR, "conf21.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
166 os.path.join(TESTDATADIR, "conf22.ini")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
167 self.assertEqual(u(os.getcwd()), cfg.getvar("OS:cwd")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
168 self.assertEqual(u(platform.python_version()), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
169 cfg.getvar_s("PY:version")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
170 |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
171 def test04_no_filter(self): |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
172 cfg = self._load( |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
173 os.path.join(TESTDATADIR, "conf20.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
174 os.path.join(TESTDATADIR, "conf21.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
175 os.path.join(TESTDATADIR, "conf22.ini")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
176 |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
177 def _look(): |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
178 return cfg.getvar("OS:cwd|upper") |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
179 |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
180 self.assertRaises(KeyError, _look) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
181 |
|
105
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
182 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
183 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
184 |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
185 def setUp(self): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
186 self._load = configmix.load |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
187 |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
188 def test05_identity(self): |
|
113
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
189 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
190 cfg2 = configmix.merge(cfg, None) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
191 self.assertEqual(id(cfg), id(cfg2)) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
192 |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
193 def test06_identity(self): |
|
113
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
194 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
195 cfg2 = configmix.merge(cfg, {}) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
196 self.assertEqual(id(cfg), id(cfg2)) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
197 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
198 |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
199 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
200 |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
201 def setUp(self): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
202 self._load = configmix.safe_load |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
203 |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
204 def test05_deepcopy(self): |
|
113
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
205 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
206 cfg2 = configmix.safe_merge(cfg, None) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
207 self.assertNotEqual(id(cfg), id(cfg2)) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
208 |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
209 def test06_deepcopy(self): |
|
113
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
210 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
211 cfg2 = configmix.safe_merge(cfg, {}) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
212 self.assertNotEqual(id(cfg), id(cfg2)) |
|
5b667c252f8c
Test whether safe_merge really returns a deepcopy in the initial case and when not really merging
Franz Glasner <hg@dom66.de>
parents:
112
diff
changeset
|
213 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
214 |
| 93 | 215 if __name__ == "__main__": |
| 216 unittest.main() |
