annotate tests/test.py @ 284:4aaf74858d07

Some links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws module
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 07 Dec 2020 01:59:11 +0100
parents af371f9c016d
children 6a044778371a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
3 import sys
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
4 import os
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
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
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
8
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
9 sys.path.insert(
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
10 0,
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
11 os.path.abspath(
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
12 os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
13
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
14 import configmix
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
15 import configmix.ini
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
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
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
18 import configmix.py
195
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
19 import configmix.toml
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
20 from configmix.compat import u
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
21
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
22
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
23 TESTDATADIR = os.path.join(
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
24 os.path.abspath(os.path.dirname(__file__)),
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
25 "data")
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
26
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
27
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
28 class T01Basic(unittest.TestCase):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
29
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
30 """Check with low-level internal interfaces"""
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
31
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
32 def __check_types(self, cfg):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
33 self.assertEqual(u("the value"),
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
34 cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
35 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
36 self.assertEqual(2, cfg.get("key2"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
37 self.assertEqual(5.7, cfg.get("key3"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
38 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
39 self.assertTrue(cfg.get("key4"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
40 self.assertTrue(isinstance(cfg.get("key4"), bool))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
41 self.assertFalse(cfg.get("key5"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
42 self.assertTrue(isinstance(cfg.get("key5"), bool))
95
a0ed95975980 Test octal n umbers in values
Franz Glasner <hg@dom66.de>
parents: 93
diff changeset
43 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
44 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
45 cfg.get("key7"))
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
46
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
47 def __check_comment(self, cfg):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
48 # 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
49 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
50 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
51
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
52 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
53
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
54 def _c(name):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
55 def _f():
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
56 cfg[u(name)]
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
57 return _f
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
58
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
59 # 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
60 self.assertRaises(KeyError, _c("__comment1"))
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
61 self.assertRaises(KeyError, _c("__comment2"))
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
62
97
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
63 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
64 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
65 cfg.get("key1"))
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
66 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
67 cfg.get("key2"))
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
68 self.assertEqual(32,
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
69 cfg["tree1"]["key3"])
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
70 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
71 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
72 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
73
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
74 def test01_ini_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
75 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
76 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
77 self.__check_comment(cfg)
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
78
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
79 def test01_toml_types(self):
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
80 cfg = configmix.toml.load(os.path.join(TESTDATADIR, "conf1.toml"))
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
81 self.__check_types(cfg)
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
82 self.__check_comment(cfg)
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
83
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
84 def test02_py_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
85 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
86 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
87 self.__check_no_comment(cfg)
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
88
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
89 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
90 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
91 encoding="utf-8") as f:
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
92 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
93 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
94 self.assertTrue(isinstance(cfg, configmix.yaml.OrderedDict))
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
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)
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
97
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
98 def test04_json_types(self):
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
99 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
100 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
101 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
102 self.__check_comment(cfg)
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
103
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
104 def test05_py_export_all(self):
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
105 # When __all__ is given only it's keys are exported
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
106 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf2.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
107 self.assertEqual(u("the next value"), cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
108 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
109 self.assertTrue(cfg.get("key2") is None)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
110
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
111 def test06_py_hide_private(self):
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
112 # When no __all__ is given all symbols with leading "_" are hidden
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
113 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf3.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
114 self.assertEqual(u("the next value "), cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
115 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
116 self.assertTrue(cfg.get("_key2") is None)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
117
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
118 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
119 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
120 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
121
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
122 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
123 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
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
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
126 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
127 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
128 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
129 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
130 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
131
130
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
132 def test10_json_tree(self):
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
133 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
134 self.__check_tree(cfg)
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
135
195
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
136 def test11_toml_tree(self):
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
137 cfg = configmix.toml.load(os.path.join(TESTDATADIR, "conf10.toml"))
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
138 self.__check_tree(cfg)
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
139
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
140
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
141 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
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 def test01_load(self):
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
144 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
145 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
146 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
147
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("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
149 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
150 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
151 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
152
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 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
154 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
155 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
156 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
157 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
158 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
159
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 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
161 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
162 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
163 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
164
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
165 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
166
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
167 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
168 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
169 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
170 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
171
109
057d87d030f1 Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents: 105
diff changeset
172 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
173 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
174
057d87d030f1 Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents: 105
diff changeset
175 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
176 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
177
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
178 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
179 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
180 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
181 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
182 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
183
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("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
185 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
186 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
187 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
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 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
190 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
191
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 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
193 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
194 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
195 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
196
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
197 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
198
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
199 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
200 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
201 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
202 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
203
130
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
204 def test02_load_with_json(self):
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
205 cfg = self._load(
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
206 os.path.join(TESTDATADIR, "conf20.yml"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
207 os.path.join(TESTDATADIR, "conf21.yml"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
208 # .ini replaced with an equivalent .json
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
209 os.path.join(TESTDATADIR, "conf23.json"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
210
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
211 self.assertEqual(u("the_database_user_2"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
212 cfg.getvar_s("db.user.name"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
213 self.assertEqual(u("the-database-password-2"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
214 cfg.getvar_s("db.user.pwd"))
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 tmpdir = cfg.getvar_s("tmpdir")
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
217 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
218
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
219 self.assertEqual(u("3rd-host"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
220 cfg.getvar_s("db.locinfo.ro.hostname"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
221 self.assertEqual(u("localhost"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
222 cfg.getvar_s("db.locinfo.rw.hostname"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
223
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
224 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
225
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
226 url = cfg.getvar_s("db.engines.ro.url")
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
227 self.assertEqual(
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
228 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
229 url)
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
230
196
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
231 def test02_load_with_toml(self):
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
232 cfg = self._load(
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
233 os.path.join(TESTDATADIR, "conf20.yml"),
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
234 os.path.join(TESTDATADIR, "conf21.yml"),
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
235 # .ini replaced with an equivalent .toml
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
236 os.path.join(TESTDATADIR, "conf24.toml"))
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
237
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
238 self.assertEqual(u("the_database_user_2"),
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
239 cfg.getvar_s("db.user.name"))
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
240 self.assertEqual(u("the-database-password-2"),
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
241 cfg.getvar_s("db.user.pwd"))
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
242
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
243 tmpdir = cfg.getvar_s("tmpdir")
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
244 self.assertEqual(u(os.getcwd()) + u("/tmp\\4"), tmpdir)
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
245
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
246 self.assertEqual(u("3rd-host"),
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
247 cfg.getvar_s("db.locinfo.ro.hostname"))
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
248 self.assertEqual(u("localhost"),
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
249 cfg.getvar_s("db.locinfo.rw.hostname"))
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
250
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
251 self.assertEqual(5432, cfg.getvar_s("db.locinfo.ro.port"))
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
252
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
253 url = cfg.getvar_s("db.engines.ro.url")
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
254 self.assertEqual(
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
255 u("postgresql+psycopg2://the_database_user_2:the-database-password-2@3rd-host:5432/my_database_catalog"),
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
256 url)
196
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
257
116
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
258 def test03_namespace(self):
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
259 cfg = self._load(
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
260 os.path.join(TESTDATADIR, "conf20.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
261 os.path.join(TESTDATADIR, "conf21.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
262 os.path.join(TESTDATADIR, "conf22.ini"))
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
263 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
264 self.assertEqual(u(platform.python_version()),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
265 cfg.getvar_s("PY:version"))
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
266
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
267 def test04_no_filter(self):
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
268 cfg = self._load(
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
269 os.path.join(TESTDATADIR, "conf20.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
270 os.path.join(TESTDATADIR, "conf21.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
271 os.path.join(TESTDATADIR, "conf22.ini"))
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
272
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
273 def _look():
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
274 return cfg.getvar("OS:cwd|upper")
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
275
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
276 self.assertRaises(KeyError, _look)
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
277
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
278 def test05_comments(self):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
279 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
280 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
281 os.path.join(TESTDATADIR, "conf22.ini"),
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
282 os.path.join(TESTDATADIR, "conf23.json"),
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
283 os.path.join(TESTDATADIR, "conf24.toml"))
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
284
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
285 def _c(name):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
286 def _f():
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
287 cfg.getvar_s(name)
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
288 return _f
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
289
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
290 # 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
291 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
292 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
293 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
294 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
295
146
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
296 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
297 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
298 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
299 os.path.join(TESTDATADIR, "conf22.ini"),
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
300 os.path.join(TESTDATADIR, "conf23.json"),
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
301 os.path.join(TESTDATADIR, "conf24.toml"))
146
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
302
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
303 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
304 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
305 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
306 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
307 _check(v)
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
308
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
309 _check(cfg)
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
310
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
311 def test07_deletions(self):
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
312 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
313 os.path.join(TESTDATADIR, "conf21.yml"),
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
314 os.path.join(TESTDATADIR, "conf22.ini"),
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
315 os.path.join(TESTDATADIR, "conf23.json"),
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
316 os.path.join(TESTDATADIR, "conf24.toml"),
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
317 os.path.join(TESTDATADIR, "delete-in-dict.yml"))
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
318 # automatic clean-up
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
319 self.assertRaises(KeyError, cfg.getvar_s, "not-deleted")
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
320 # explicit deletion
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
321 self.assertRaises(KeyError, cfg.getvar_s, "to-be-deleted")
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
322 self.assertRaises(KeyError, cfg.getvar_s, "db.user.name")
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
323 self.assertEqual("the-database-password-2",cfg.getvar_s("db.user.pwd"))
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
324 self.assertRaises(KeyError, cfg.getvar_s, "test.Str")
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
325 self.assertEqual("not a list any more", cfg.getvar_s("test.List"))
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
326 self.assertEqual("the last value",
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
327 cfg.getvar_s("to-be-deleted-but-reassigned"))
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
328
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
329
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
330 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
331
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
332 def setUp(self):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
333 self._load = configmix.load
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
334
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
335 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
336 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
337 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
338 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
339
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
340 def test09_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
341 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
342 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
343 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
344
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
345
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
346 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
347
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
348 def setUp(self):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
349 self._load = configmix.safe_load
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
350
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
351 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
352 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
353 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
354 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
355
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
356 def test09_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
357 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
358 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
359 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
360
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
361
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
362 class T04CustomExtension(unittest.TestCase):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
363
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
364 def setUp(self):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
365 self._reset()
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
366
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
367 def tearDown(self):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
368 self._reset()
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
369
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
370 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
371 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
372 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
373 configmix.set_assoc(pat, fmode)
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
374
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
375 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
376 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
377 cfg = configmix.load(
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
378 os.path.join(TESTDATADIR, "conf1.ini"),
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
379 os.path.join(TESTDATADIR, "conf30.conf"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
380 self.assertEqual(u("Umlaute: ÄÖÜäöüß"), cfg.getvar_s("key7"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
381 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
382
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
383 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
384 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
385 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
386
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
387 def _ld():
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
388 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
389 os.path.join(TESTDATADIR, "conf30.conf"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
390
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
391 self.assertRaises(ValueError, _ld)
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
392
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
393 def test02_ignore_one_style(self):
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
394 configmix.clear_assoc()
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
395 configmix.set_assoc("*.conf", configmix.get_default_assoc("*.yml"))
228
b2c75efad9e4 Renamed the 'ignore' loader key to '-*-ignore-*-'
Franz Glasner <fzglas.hg@dom66.de>
parents: 227
diff changeset
396 configmix.set_assoc("*", "-*-ignore-*-", append=True)
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
397
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
398 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"),
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
399 os.path.join(TESTDATADIR, "conf30.conf"))
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
400 self.assertEqual(u("new value"), cfg.getvar_s("key-new"))
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
401 self.assertRaises(KeyError, cfg.getvar_s, "key1")
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
402
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
403 def test02_ignore_all(self):
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
404 configmix.clear_assoc()
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
405 configmix.set_assoc("*.conf", configmix.get_default_assoc("*.yml"))
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
406 # This inserts at index 0 effectively ignoring all configuration files!
228
b2c75efad9e4 Renamed the 'ignore' loader key to '-*-ignore-*-'
Franz Glasner <fzglas.hg@dom66.de>
parents: 227
diff changeset
407 configmix.set_assoc("*", "-*-ignore-*-")
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
408
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
409 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"),
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
410 os.path.join(TESTDATADIR, "conf30.conf"))
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
411 self.assertRaises(KeyError, cfg.getvar_s, "key-new")
251
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
412 self.assertRaises(KeyError, cfg.getvar_s, "key1")
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
413
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
414 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
415 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
416 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
417 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
418 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
419
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
420 def _g():
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
421 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
422
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
423 self.assertRaises(KeyError, _g)
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
424
183
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
425 def test04_determine_mode(self):
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
426 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
427 configmix.set_assoc("*.conf", configmix.try_determine_filemode)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
428 cfg = configmix.load(os.path.join(TESTDATADIR, "conf30.conf"))
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
429 self.assertEqual(u("new value"), cfg.getvar_s("key-new"))
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
430
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
431 self.assertRaises(KeyError, cfg.getvar_s, "key7")
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
432
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
433 def test05_try_determine_mode_none(self):
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
434 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
435 configmix.set_assoc("*.conf", configmix.try_determine_filemode)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
436
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
437 def _ld():
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
438 return configmix.load(os.path.join(TESTDATADIR, "no-mode.conf"))
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
439
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
440 self.assertRaises(ValueError, _ld)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
441
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
442 def test06_try_determine_mode_unknown(self):
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
443 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
444 configmix.set_assoc("*.conf", configmix.try_determine_filemode)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
445
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
446 def _ld():
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
447 return configmix.load(os.path.join(TESTDATADIR, "unknown-mode.conf"))
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
448
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
449 self.assertRaises(KeyError, _ld)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
450
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
451
251
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
452 class T05SubstituteExpand(unittest.TestCase):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
453
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
454 def setUp(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
455 self._reset()
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
456
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
457 def tearDown(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
458 self._reset()
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
459
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
460 def _reset(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
461 configmix.clear_assoc()
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
462 for pat, fmode in configmix.DEFAULT_ASSOC:
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
463 configmix.set_assoc(pat, fmode)
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
464
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
465 def test01_expand_int_ini(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
466 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
467 self.assertEqual(2, cfg.getvar_s("key100"))
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
468
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
469 def test02_expand_int_indirect_ini(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
470 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
471 self.assertEqual(2, cfg.getvar_s("key102"))
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
472
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
473 def test03_expand_int2str_ini(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
474 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
475 self.assertEqual("the 2 value", cfg.getvar_s("key101"))
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
476
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
477 def test04_expand_intint2str_ini(self):
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
478 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
479 self.assertEqual("22", cfg.getvar_s("key103"))
251
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
480
2a8dcab2de8c Do not implicitely convert a configuration value to text if the value is the result of just a variable expansion.
Franz Glasner <fzglas.hg@dom66.de>
parents: 228
diff changeset
481
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
482 if __name__ == "__main__":
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
483 unittest.main()