Mercurial > hgrepos > Python > libs > ConfigMix
annotate tests/test.py @ 181:7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 03 May 2019 09:43:15 +0200 |
| parents | 1ff11462a5c1 |
| children | d1103f0f9166 |
| 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 | |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
17 import configmix.json |
| 93 | 18 import configmix.py |
| 19 from configmix.compat import u | |
| 20 | |
| 21 | |
| 22 TESTDATADIR = os.path.join( | |
| 23 os.path.abspath(os.path.dirname(__file__)), | |
| 24 "data") | |
| 25 | |
| 26 | |
| 27 class T01Basic(unittest.TestCase): | |
| 28 | |
| 29 """Check with low-level internal interfaces""" | |
| 30 | |
| 31 def __check_types(self, cfg): | |
| 32 self.assertEqual(u("the value"), | |
| 33 cfg.get("key1")) | |
| 34 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 35 self.assertEqual(2, cfg.get("key2")) | |
| 36 self.assertEqual(5.7, cfg.get("key3")) | |
| 37 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 38 self.assertTrue(cfg.get("key4")) | |
| 39 self.assertTrue(isinstance(cfg.get("key4"), bool)) | |
| 40 self.assertFalse(cfg.get("key5")) | |
| 41 self.assertTrue(isinstance(cfg.get("key5"), bool)) | |
| 95 | 42 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
|
43 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
|
44 cfg.get("key7")) |
| 93 | 45 |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
46 def __check_comment(self, cfg): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
47 # Check comments: low level comments are *not* filtered |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
48 self.assertEqual(u("Comment 1"), cfg.get("__comment1")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
49 self.assertEqual(u("Comment no 2"), cfg.get("__comment2")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
50 |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
51 def __check_no_comment(self, cfg): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
52 |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
53 def _c(name): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
54 def _f(): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
55 cfg[u(name)] |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
56 return _f |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
57 |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
58 # Variables with leading underscores are *not* imported by default |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
59 self.assertRaises(KeyError, _c("__comment1")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
60 self.assertRaises(KeyError, _c("__comment2")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
61 |
|
97
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
62 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
|
63 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
|
64 cfg.get("key1")) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
65 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
|
66 cfg.get("key2")) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
67 self.assertEqual(32, |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
68 cfg["tree1"]["key3"]) |
|
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
69 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
|
70 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
|
71 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
|
72 |
| 93 | 73 def test01_ini_types(self): |
| 74 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini")) | |
| 75 self.__check_types(cfg) | |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
76 self.__check_comment(cfg) |
| 93 | 77 |
| 78 def test02_py_types(self): | |
| 79 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py")) | |
| 80 self.__check_types(cfg) | |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
81 self.__check_no_comment(cfg) |
| 93 | 82 |
| 83 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
|
84 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
|
85 encoding="utf-8") as f: |
| 93 | 86 cfg = configmix.yaml.safe_load(f) |
|
134
2f2e819e8d17
Check the return type of the JSON and YAML loading functions: they must be a dict alike
Franz Glasner <hg@dom66.de>
parents:
130
diff
changeset
|
87 if configmix.yaml.OrderedDict: |
|
2f2e819e8d17
Check the return type of the JSON and YAML loading functions: they must be a dict alike
Franz Glasner <hg@dom66.de>
parents:
130
diff
changeset
|
88 self.assertTrue(isinstance(cfg, configmix.yaml.OrderedDict)) |
| 93 | 89 self.__check_types(cfg) |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
90 self.__check_comment(cfg) |
| 93 | 91 |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
92 def test04_json_types(self): |
|
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
93 cfg = configmix.json.load(os.path.join(TESTDATADIR, "conf1.json")) |
|
127
5b62d2c0e5a8
Use the available "OrderedDict" class as dict for the JSON parser
Franz Glasner <hg@dom66.de>
parents:
122
diff
changeset
|
94 self.assertTrue(isinstance(cfg, configmix.json.DictImpl)) |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
95 self.__check_types(cfg) |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
96 self.__check_comment(cfg) |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
97 |
|
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
98 def test05_py_export_all(self): |
| 93 | 99 # When __all__ is given only it's keys are exported |
| 100 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf2.py")) | |
| 101 self.assertEqual(u("the next value"), cfg.get("key1")) | |
| 102 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 103 self.assertTrue(cfg.get("key2") is None) | |
| 104 | |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
105 def test06_py_hide_private(self): |
| 93 | 106 # When no __all__ is given all symbols with leading "_" are hidden |
| 107 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf3.py")) | |
| 108 self.assertEqual(u("the next value "), cfg.get("key1")) | |
| 109 self.assertTrue(isinstance(cfg.get("key1"), type(u('')))) | |
| 110 self.assertTrue(cfg.get("_key2") is None) | |
| 111 | |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
112 def test07_ini_tree(self): |
|
97
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
113 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
|
114 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
|
115 |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
116 def test08_py_tree(self): |
|
97
1b4d95f60650
Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents:
95
diff
changeset
|
117 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
|
118 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
|
119 |
|
122
21d92ff8cf31
Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents:
120
diff
changeset
|
120 def test09_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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 |
|
130
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
126 def test10_json_tree(self): |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
127 cfg = configmix.json.load(os.path.join(TESTDATADIR, "conf10.json")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
128 self.__check_tree(cfg) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
129 |
| 93 | 130 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
131 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
|
132 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
133 def test01_load(self): |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
134 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
|
135 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
|
136 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
|
137 |
|
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 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
|
139 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
|
140 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
|
141 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
|
142 |
|
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 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
|
144 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
|
145 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
|
146 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
|
147 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
|
148 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("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
|
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: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
|
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 |
|
109
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
162 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
|
163 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
|
164 |
|
057d87d030f1
Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents:
105
diff
changeset
|
165 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
|
166 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
|
167 |
|
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
|
168 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
|
169 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
|
170 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
|
171 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
|
172 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
|
173 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
174 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
|
175 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
|
176 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
|
177 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
|
178 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
179 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
|
180 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
|
181 |
|
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 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
|
183 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
|
184 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
|
185 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
|
186 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
187 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
|
188 |
|
1c2f8a96dec2
Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
97
diff
changeset
|
189 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
|
190 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
|
191 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
|
192 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
|
193 |
|
130
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
194 def test02_load_with_json(self): |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
195 cfg = self._load( |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
196 os.path.join(TESTDATADIR, "conf20.yml"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
197 os.path.join(TESTDATADIR, "conf21.yml"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
198 # .ini replaced with an equivalent .json |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
199 os.path.join(TESTDATADIR, "conf23.json")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
200 |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
201 self.assertEqual(u("the_database_user_2"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
202 cfg.getvar_s("db.user.name")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
203 self.assertEqual(u("the-database-password-2"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
204 cfg.getvar_s("db.user.pwd")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
205 |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
206 tmpdir = cfg.getvar_s("tmpdir") |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
207 self.assertEqual(u(os.getcwd()) + u("/tmp\\3"), tmpdir) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
208 |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
209 self.assertEqual(u("3rd-host"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
210 cfg.getvar_s("db.locinfo.ro.hostname")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
211 self.assertEqual(u("localhost"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
212 cfg.getvar_s("db.locinfo.rw.hostname")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
213 |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
214 self.assertEqual(5432, cfg.getvar_s("db.locinfo.ro.port")) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
215 |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
216 url = cfg.getvar_s("db.engines.ro.url") |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
217 self.assertEqual( |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
218 u("postgresql+psycopg2://the_database_user_2:the-database-password-2@3rd-host:5432/my_database_catalog"), |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
219 url) |
|
b11af3ded7c1
Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents:
127
diff
changeset
|
220 |
|
116
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
221 def test03_namespace(self): |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
222 cfg = self._load( |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
223 os.path.join(TESTDATADIR, "conf20.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
224 os.path.join(TESTDATADIR, "conf21.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
225 os.path.join(TESTDATADIR, "conf22.ini")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
226 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
|
227 self.assertEqual(u(platform.python_version()), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
228 cfg.getvar_s("PY:version")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
229 |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
230 def test04_no_filter(self): |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
231 cfg = self._load( |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
232 os.path.join(TESTDATADIR, "conf20.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
233 os.path.join(TESTDATADIR, "conf21.yml"), |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
234 os.path.join(TESTDATADIR, "conf22.ini")) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
235 |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
236 def _look(): |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
237 return cfg.getvar("OS:cwd|upper") |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
238 |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
239 self.assertRaises(KeyError, _look) |
|
c37fa787c022
More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents:
113
diff
changeset
|
240 |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
241 def test05_comments(self): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
242 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
243 os.path.join(TESTDATADIR, "conf21.yml"), |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
244 os.path.join(TESTDATADIR, "conf22.ini"), |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
245 os.path.join(TESTDATADIR, "conf23.json")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
246 |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
247 def _c(name): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
248 def _f(): |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
249 cfg.getvar_s(name) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
250 return _f |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
251 |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
252 # Variables with leading underscores are *not* imported by default |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
253 self.assertEqual(0o0027, int(cfg.getvar_s("process.umask"), 0)) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
254 self.assertRaises(KeyError, _c("process.__doc1")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
255 self.assertRaises(KeyError, _c("db.__comment1")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
256 self.assertRaises(KeyError, _c("db.user.__doc2")) |
|
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
257 |
|
146
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
258 def test06_check_all_comments(self): |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
259 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"), |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
260 os.path.join(TESTDATADIR, "conf21.yml"), |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
261 os.path.join(TESTDATADIR, "conf22.ini"), |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
262 os.path.join(TESTDATADIR, "conf23.json")) |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
263 |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
264 def _check(d): |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
265 for k, v in d.items(): |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
266 self.assertFalse(configmix._is_comment(k)) |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
267 if isinstance(v, dict): |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
268 _check(v) |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
269 |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
270 _check(cfg) |
|
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
271 |
|
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
|
272 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
273 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
274 |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
275 def setUp(self): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
276 self._load = configmix.load |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
277 |
|
146
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
278 def test07_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
|
279 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
|
280 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
|
281 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
|
282 |
|
146
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
283 def test08_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
|
284 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
|
285 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
|
286 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
|
287 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
288 |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
289 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
290 |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
291 def setUp(self): |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
292 self._load = configmix.safe_load |
|
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
293 |
|
146
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
294 def test07_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
|
295 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
|
296 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
|
297 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
|
298 |
|
146
bbf47bfb48a2
Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents:
144
diff
changeset
|
299 def test08_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
|
300 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
|
301 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
|
302 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
|
303 |
|
112
c50ad93eb5dc
Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents:
109
diff
changeset
|
304 |
|
140
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
305 class T04CustomExtension(unittest.TestCase): |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
306 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
307 def setUp(self): |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
308 self._reset() |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
309 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
310 def tearDown(self): |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
311 self._reset() |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
312 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
313 def _reset(self): |
|
181
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
314 configmix.clear_assoc() |
|
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
315 for pat, fmode in configmix.DEFAULT_ASSOC: |
|
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
316 configmix.set_assoc(pat, fmode) |
|
140
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
317 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
318 def test01_additional(self): |
|
181
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
319 configmix.set_assoc("*.conf", configmix.get_default_assoc("*.yml")) |
|
140
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
320 cfg = configmix.load( |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
321 os.path.join(TESTDATADIR, "conf1.ini"), |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
322 os.path.join(TESTDATADIR, "conf30.conf")) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
323 self.assertEqual(u("Umlaute: ÄÖÜäöüß"), cfg.getvar_s("key7")) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
324 self.assertEqual(u("new value"), cfg.getvar_s("key-new")) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
325 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
326 def test02_only_style_wrong_style(self): |
|
181
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
327 configmix.clear_assoc() |
|
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
328 configmix.set_assoc("*.conf", configmix.get_default_assoc("*.yml")) |
|
140
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
329 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
330 def _ld(): |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
331 return configmix.load(os.path.join(TESTDATADIR, "conf1.ini"), |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
332 os.path.join(TESTDATADIR, "conf30.conf")) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
333 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
334 self.assertRaises(ValueError, _ld) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
335 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
336 def test03_only_style_corrrect_style(self): |
|
181
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
337 configmix.clear_assoc() |
|
7cfdc972af42
Refactor: Renamed public functions to be conform with the new loader search
Franz Glasner <fzglas.hg@dom66.de>
parents:
171
diff
changeset
|
338 configmix.set_assoc("*.conf", configmix.get_default_assoc("*.yml")) |
|
140
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
339 cfg = configmix.load(os.path.join(TESTDATADIR, "conf30.conf")) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
340 self.assertEqual(u("new value"), cfg.getvar_s("key-new")) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
341 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
342 def _g(): |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
343 return cfg.getvar_s("key7") |
|
144
7e6ec99d5ff5
Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents:
140
diff
changeset
|
344 |
|
140
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
345 self.assertRaises(KeyError, _g) |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
346 |
|
d8d47893df5b
Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents:
134
diff
changeset
|
347 |
| 93 | 348 if __name__ == "__main__": |
| 349 unittest.main() |
