annotate tests/test.py @ 647:df58983f28a2

Allow to disable the internal caching in configmix. Also allow to re-enable internal caching.
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 11 Mar 2022 01:53:08 +0100
parents db3ff4fbb4ce
children fe1299825a9a
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 unittest
116
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
4 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
5 import io
619
75ecbe07abff Introduct a test context to more easily switch between some unittest configurations
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 554
diff changeset
6 import os
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
7
619
75ecbe07abff Introduct a test context to more easily switch between some unittest configurations
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 554
diff changeset
8 from _test_context import TESTDATADIR
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
9
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
10 import configmix
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
11 import configmix.ini
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
12 import configmix.yaml
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
13 import configmix.json
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
14 import configmix.py
195
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
15 import configmix.toml
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
16 import configmix.config
432
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
17 from configmix.compat import u, PY2
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
18
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
19
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
20 class T01Basic(unittest.TestCase):
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 """Check with low-level internal interfaces"""
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
23
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
24 def __check_types(self, cfg):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
25 self.assertEqual(u("the value"),
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
26 cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
27 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
28 self.assertEqual(2, cfg.get("key2"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
29 self.assertEqual(5.7, cfg.get("key3"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
30 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
31 self.assertTrue(cfg.get("key4"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
32 self.assertTrue(isinstance(cfg.get("key4"), bool))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
33 self.assertFalse(cfg.get("key5"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
34 self.assertTrue(isinstance(cfg.get("key5"), bool))
95
a0ed95975980 Test octal n umbers in values
Franz Glasner <hg@dom66.de>
parents: 93
diff changeset
35 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
36 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
37 cfg.get("key7"))
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
38
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
39 def __check_comment(self, cfg):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
40 # 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
41 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
42 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
43
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
44 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
45
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
46 def _c(name):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
47 def _f():
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
48 cfg[u(name)]
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
49 return _f
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 # 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
52 self.assertRaises(KeyError, _c("__comment1"))
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
53 self.assertRaises(KeyError, _c("__comment2"))
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
54
97
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
55 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
56 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
57 cfg.get("key1"))
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
58 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
59 cfg.get("key2"))
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
60 self.assertEqual(32,
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
61 cfg["tree1"]["key3"])
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
62 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
63 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
64 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
65
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
66 def test01_ini_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
67 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
68 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
69 self.__check_comment(cfg)
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
70
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
71 def test01_toml_types(self):
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
72 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
73 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
74 self.__check_comment(cfg)
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
75
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
76 def test02_py_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
77 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
78 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
79 self.__check_no_comment(cfg)
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
80
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
81 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
82 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
83 encoding="utf-8") as f:
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
84 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
85 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
86 self.assertTrue(isinstance(cfg, configmix.yaml.OrderedDict))
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
87 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
88 self.__check_comment(cfg)
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
89
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
90 def test04_json_types(self):
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
91 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
92 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
93 self.__check_types(cfg)
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
94 self.__check_comment(cfg)
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
95
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
96 def test05_py_export_all(self):
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
97 # When __all__ is given only it's keys are exported
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
98 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf2.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
99 self.assertEqual(u("the next value"), cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
100 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
101 self.assertTrue(cfg.get("key2") is None)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
102
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
103 def test06_py_hide_private(self):
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
104 # When no __all__ is given all symbols with leading "_" are hidden
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
105 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf3.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
106 self.assertEqual(u("the next value "), cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
107 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
108 self.assertTrue(cfg.get("_key2") is None)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
109
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
110 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
111 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
112 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
113
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
114 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
115 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
116 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
117
122
21d92ff8cf31 Begin the handling of JSON-style configuration files
Franz Glasner <hg@dom66.de>
parents: 120
diff changeset
118 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
119 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
120 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
121 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
122 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
123
130
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
124 def test10_json_tree(self):
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
125 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
126 self.__check_tree(cfg)
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
127
195
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
128 def test11_toml_tree(self):
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
129 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
130 self.__check_tree(cfg)
28e6c1413947 Added support for TOML style configuration files
Franz Glasner <fzglas.hg@dom66.de>
parents: 183
diff changeset
131
292
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
132 def test12_yaml_no_duplicate_keys(self):
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
133 import yaml.constructor as yc
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
134 with io.open(os.path.join(TESTDATADIR, "duplicate-keys.yml"), "rt",
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
135 encoding="utf-8") as f:
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
136 cfg = configmix.yaml.safe_load(f)
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
137
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
138 with io.open(os.path.join(TESTDATADIR, "duplicate-keys.yml"), "rt",
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
139 encoding="utf-8") as f:
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
140 self.assertRaises(yc.ConstructorError,
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
141 configmix.yaml.safe_load,
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
142 f, strict=True)
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
143
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
144 def test13_yaml_no_duplicate_keys_2(self):
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
145 import yaml.constructor as yc
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
146 with io.open(os.path.join(TESTDATADIR, "duplicate-keys-2.yml"), "rt",
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
147 encoding="utf-8") as f:
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
148 cfg = configmix.yaml.safe_load(f)
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
149
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
150 with io.open(os.path.join(TESTDATADIR, "duplicate-keys-2.yml"), "rt",
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
151 encoding="utf-8") as f:
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
152 self.assertRaises(yc.ConstructorError,
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
153 configmix.yaml.safe_load,
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
154 f, strict=True)
6a044778371a Some unittests for the new "strict" YAML parsing mode to prevent duplicate keys within a single YAML document
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 276
diff changeset
155
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
156
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
157 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
158
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 def test01_load(self):
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
160 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
161 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
162 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
163
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 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
165 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
166 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
167 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
168
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 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
170 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
171 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
172 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
173 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
174 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
175
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("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
177 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
178 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
179 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
180
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 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
182
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 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
184 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
185 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
186 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
187
109
057d87d030f1 Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents: 105
diff changeset
188 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
189 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
190
057d87d030f1 Test replacing lists by strings and replacing strings by lists
Franz Glasner <hg@dom66.de>
parents: 105
diff changeset
191 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
192 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
193
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
194 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
195 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
196 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
197 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
198 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
199
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(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
201 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
202 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
203 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
204
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
205 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
206 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
207
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
208 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
209 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
210 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
211 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
212
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
213 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
214
1c2f8a96dec2 Unittests with some real-worl-examples of .yml and .ini configuration files
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 97
diff changeset
215 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
216 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
217 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
218 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
219
486
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
220 def test02b_load_with_ini(self):
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
221 cfg = self._load(
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
222 os.path.join(TESTDATADIR, "conf20.yml"),
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
223 os.path.join(TESTDATADIR, "conf21.yml"),
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
224 os.path.join(TESTDATADIR, "conf22.ini"))
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
225 self.assertEqual(u("3rd-host3rd-host"),
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
226 cfg.getvar_s("db.locinfo.ro.hostname2"))
5a88c514d4e0 More unittests for interpolation
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 467
diff changeset
227
130
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
228 def test02_load_with_json(self):
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
229 cfg = self._load(
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
230 os.path.join(TESTDATADIR, "conf20.yml"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
231 os.path.join(TESTDATADIR, "conf21.yml"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
232 # .ini replaced with an equivalent .json
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
233 os.path.join(TESTDATADIR, "conf23.json"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
234
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
235 self.assertEqual(u("the_database_user_2"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
236 cfg.getvar_s("db.user.name"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
237 self.assertEqual(u("the-database-password-2"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
238 cfg.getvar_s("db.user.pwd"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
239
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
240 tmpdir = cfg.getvar_s("tmpdir")
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
241 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
242
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
243 self.assertEqual(u("3rd-host"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
244 cfg.getvar_s("db.locinfo.ro.hostname"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
245 self.assertEqual(u("localhost"),
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
246 cfg.getvar_s("db.locinfo.rw.hostname"))
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
247
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
248 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
249
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
250 url = cfg.getvar_s("db.engines.ro.url")
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
251 self.assertEqual(
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
252 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
253 url)
b11af3ded7c1 Added more JSON specific unit tests
Franz Glasner <hg@dom66.de>
parents: 127
diff changeset
254
196
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
255 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
256 cfg = self._load(
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
257 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
258 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
259 # .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
260 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
261
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
262 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
263 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
264 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
265 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
266
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
267 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
268 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
269
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
270 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
271 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
272 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
273 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
274
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
275 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
276
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
277 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
278 self.assertEqual(
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
279 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
280 url)
196
13527d70e9e3 An additional unit test with a TOML style configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 195
diff changeset
281
116
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
282 def test03_namespace(self):
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
283 cfg = self._load(
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
284 os.path.join(TESTDATADIR, "conf20.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
285 os.path.join(TESTDATADIR, "conf21.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
286 os.path.join(TESTDATADIR, "conf22.ini"))
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
287 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
288 self.assertEqual(u(platform.python_version()),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
289 cfg.getvar_s("PY:version"))
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
290
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
291 def test03_namespace_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
292 cfg = self._load(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
293 os.path.join(TESTDATADIR, "conf20.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
294 os.path.join(TESTDATADIR, "conf21.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
295 os.path.join(TESTDATADIR, "conf22.ini"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
296 self.assertEqual(u(os.getcwd()), cfg.getvarl("cwd", namespace="OS"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
297 self.assertEqual(u(platform.python_version()),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
298 cfg.getvarl_s("version", namespace="PY"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
299
116
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
300 def test04_no_filter(self):
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
301 cfg = self._load(
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
302 os.path.join(TESTDATADIR, "conf20.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
303 os.path.join(TESTDATADIR, "conf21.yml"),
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
304 os.path.join(TESTDATADIR, "conf22.ini"))
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
305
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
306 def _look():
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
307 return cfg.getvar("OS:cwd|upper")
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
308
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
309 self.assertRaises(KeyError, _look)
c37fa787c022 More unittests for fetching namespaced variables and filters
Franz Glasner <hg@dom66.de>
parents: 113
diff changeset
310
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
311 def test04_no_filter_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
312 cfg = self._load(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
313 os.path.join(TESTDATADIR, "conf20.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
314 os.path.join(TESTDATADIR, "conf21.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
315 os.path.join(TESTDATADIR, "conf22.ini"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
316
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
317 def _look():
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
318 return cfg.getvarl("cwd|upper", namespace="OS")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
319
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
320 self.assertRaises(KeyError, _look)
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
321
144
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
322 def test05_comments(self):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
323 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
324 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
325 os.path.join(TESTDATADIR, "conf22.ini"),
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
326 os.path.join(TESTDATADIR, "conf23.json"),
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
327 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
328
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
329 def _c(name):
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
330 def _f():
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
331 cfg.getvar_s(name)
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
332 return _f
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
333
7e6ec99d5ff5 Allow comments as keys and filter them by default
Franz Glasner <hg@dom66.de>
parents: 140
diff changeset
334 # 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
335 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
336 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
337 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
338 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
339
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
340 def test05_comments_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
341 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
342 os.path.join(TESTDATADIR, "conf21.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
343 os.path.join(TESTDATADIR, "conf22.ini"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
344 os.path.join(TESTDATADIR, "conf23.json"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
345 os.path.join(TESTDATADIR, "conf24.toml"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
346
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
347 def _c(*names):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
348 def _f():
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
349 cfg.getvarl_s(*names)
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
350 return _f
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
351
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
352 # Variables with leading underscores are *not* imported by default
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
353 self.assertEqual(0o0027, int(cfg.getvarl_s("process", "umask"), 0))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
354 self.assertRaises(KeyError, _c("process", "__doc1"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
355 self.assertRaises(KeyError, _c("db", "__comment1"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
356 self.assertRaises(KeyError, _c("db", "user", "__doc2"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
357
146
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
358 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
359 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
360 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
361 os.path.join(TESTDATADIR, "conf22.ini"),
198
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
362 os.path.join(TESTDATADIR, "conf23.json"),
0b855758ba08 An additional TOML-related unittest (types)
Franz Glasner <fzglas.hg@dom66.de>
parents: 196
diff changeset
363 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
364
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
365 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
366 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
367 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
368 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
369 _check(v)
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
370
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
371 _check(cfg)
bbf47bfb48a2 Add a unittest that scans the complete configuration dict for comment keys
Franz Glasner <hg@dom66.de>
parents: 144
diff changeset
372
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
373 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
374 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
375 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
376 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
377 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
378 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
379 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
380 # automatic clean-up
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
381 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
382 # explicit deletion
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
383 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
384 self.assertRaises(KeyError, cfg.getvar_s, "db.user.name")
323
Franz Glasner <fzglas.hg@dom66.de>
parents: 320
diff changeset
385 self.assertEqual("the-database-password-2", cfg.getvar_s("db.user.pwd"))
276
af371f9c016d Allow deletion of key-value pairs when merging is done.
Franz Glasner <fzglas.hg@dom66.de>
parents: 251
diff changeset
386 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
387 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
388 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
389 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
390
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
391 def test07_deletions_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
392 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
393 os.path.join(TESTDATADIR, "conf21.yml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
394 os.path.join(TESTDATADIR, "conf22.ini"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
395 os.path.join(TESTDATADIR, "conf23.json"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
396 os.path.join(TESTDATADIR, "conf24.toml"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
397 os.path.join(TESTDATADIR, "delete-in-dict.yml"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
398 # automatic clean-up
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
399 self.assertRaises(KeyError, cfg.getvarl_s, "not-deleted")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
400 # explicit deletion
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
401 self.assertRaises(KeyError, cfg.getvarl_s, "to-be-deleted")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
402 self.assertRaises(KeyError, cfg.getvarl_s, "db" "user.name")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
403 self.assertEqual("the-database-password-2",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
404 cfg.getvarl_s("db", "user", "pwd"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
405 self.assertRaises(KeyError, cfg.getvarl_s, "test", "Str")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
406 self.assertEqual("not a list any more", cfg.getvarl_s("test", "List"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
407 self.assertEqual("the last value",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
408 cfg.getvarl_s("to-be-deleted-but-reassigned"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
409
351
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
410 def test08_None_filter_single(self):
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
411 cfg = self._load()
525
be6ef72c55d5 Change Configuration.expand_variable() to Configuration.interpolate_variables()
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 516
diff changeset
412 x = cfg.interpolate_variables("{{non-existing|None}}")
351
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
413 self.assertIsNone(x)
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
414
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
415 def test09_None_filter_embedded(self):
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
416 cfg = self._load()
525
be6ef72c55d5 Change Configuration.expand_variable() to Configuration.interpolate_variables()
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 516
diff changeset
417 x = cfg.interpolate_variables("A{{non-existing|None}}Z")
355
260354e9a7f9 Avoid DeprecationWarning: assertEquals() -> assertEqual()
Franz Glasner <fzglas.hg@dom66.de>
parents: 352
diff changeset
418 self.assertEqual("AZ", x)
351
efbf7ba40287 Unittests for the "|None" filter
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 340
diff changeset
419
352
2b209bdf6995 Implement the "Empty" filter.
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 351
diff changeset
420 def test10_Empty_filtersingle(self):
2b209bdf6995 Implement the "Empty" filter.
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 351
diff changeset
421 cfg = self._load()
525
be6ef72c55d5 Change Configuration.expand_variable() to Configuration.interpolate_variables()
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 516
diff changeset
422 x = cfg.interpolate_variables("{{non-existing|Empty}}")
355
260354e9a7f9 Avoid DeprecationWarning: assertEquals() -> assertEqual()
Franz Glasner <fzglas.hg@dom66.de>
parents: 352
diff changeset
423 self.assertEqual("", x)
352
2b209bdf6995 Implement the "Empty" filter.
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 351
diff changeset
424
356
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
425 def test11_None_filter_pass_through(self):
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
426 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
427 os.path.join(TESTDATADIR, "conf21.yml"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
428 os.path.join(TESTDATADIR, "conf22.ini"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
429 os.path.join(TESTDATADIR, "conf23.json"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
430 os.path.join(TESTDATADIR, "conf24.toml"))
525
be6ef72c55d5 Change Configuration.expand_variable() to Configuration.interpolate_variables()
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 516
diff changeset
431 x = cfg.interpolate_variables("{{intl.cache.items|None}}")
356
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
432 self.assertEqual(10, x)
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
433
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
434 def test12_Empty_filter_pass_through(self):
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
435 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
436 os.path.join(TESTDATADIR, "conf21.yml"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
437 os.path.join(TESTDATADIR, "conf22.ini"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
438 os.path.join(TESTDATADIR, "conf23.json"),
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
439 os.path.join(TESTDATADIR, "conf24.toml"))
525
be6ef72c55d5 Change Configuration.expand_variable() to Configuration.interpolate_variables()
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 516
diff changeset
440 x = cfg.interpolate_variables("{{intl.cache.items|Empty}}")
356
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
441 self.assertEqual(10, x)
647
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
442 x = cfg.interpolate_variables("{{intl.cache.items|Empty}}")
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
443 self.assertEqual(10, x)
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
444
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
445 def test12a_Empty_filter_pass_through_without_cache(self):
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
446 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"),
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
447 os.path.join(TESTDATADIR, "conf21.yml"),
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
448 os.path.join(TESTDATADIR, "conf22.ini"),
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
449 os.path.join(TESTDATADIR, "conf23.json"),
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
450 os.path.join(TESTDATADIR, "conf24.toml"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
451 cfg.disable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
452 x = cfg.interpolate_variables("{{intl.cache.items|Empty}}")
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
453 self.assertEqual(10, x)
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
454 x = cfg.interpolate_variables("{{intl.cache.items|Empty}}")
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
455 self.assertEqual(10, x)
356
a5c792074ec9 Unittest to check "None" and "Empty" filters for existing values: they just pass through unchanged
Franz Glasner <fzglas.hg@dom66.de>
parents: 355
diff changeset
456
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
457 def test13_keyerror(self):
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
458 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
459 self.assertRaises(KeyError, cfg.getvar_s, "non.existing.key")
647
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
460 self.assertRaises(KeyError, cfg.getvar_s, "non.existing.key")
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
461
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
462 def test13a_keyerror_without_cache(self):
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
463 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
464 cfg.disable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
465 self.assertRaises(KeyError, cfg.getvar_s, "non.existing.key")
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
466 self.assertRaises(KeyError, cfg.getvar_s, "non.existing.key")
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
467
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
468 def test14_getvar_with_default(self):
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
469 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
470 self.assertEqual("999", cfg.getvar("non.existing.key", default="999"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
471
625
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
472 def test14_getvar_with_original_default(self):
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
473 # The default must be the original and not a copy
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
474 dflt = {"foo": "bar"}
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
475 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
476 self.assertTrue(cfg.getvar("non.existing.key", default=dflt) is dflt)
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
477
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
478 def test15_getvar_s_with_default(self):
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
479 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
480 self.assertEqual("999", cfg.getvar_s("non.existing.key",
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
481 default="999"))
647
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
482 self.assertEqual("999", cfg.getvar_s("non.existing.key",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
483 default="999"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
484
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
485 def test15a_getvar_s_with_default_without_cache(self):
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
486 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
487 cfg.disable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
488 self.assertEqual("999", cfg.getvar_s("non.existing.key",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
489 default="999"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
490 self.assertEqual("999", cfg.getvar_s("non.existing.key",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
491 default="999"))
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
492
625
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
493 def test15_getvar_s_with_original_default(self):
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
494 # The default must be the original and not a copy
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
495 dflt = {"foo2": "bar2"}
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
496 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
497 self.assertTrue(cfg.getvar_s("non.existing.key", default=dflt) is dflt)
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
498
629
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
499 def test15_getvar_s_substituting_error_with_original_default(self):
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
500 # The default must be the original and not a copy
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
501 dflt = {"foo22": "bar22"}
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
502 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
503 # exists ...
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
504 cfg.getvar(u"intl.localedir")
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
505 # ... but cannot interpolated
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
506 self.assertTrue(cfg.getvar_s(u"intl.localedir", default=dflt) is dflt)
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
507
625
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
508 def test15b_getvarl_with_original_default(self):
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
509 # The default must be the original and not a copy
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
510 dflt = {"foo2": "bar2"}
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
511 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
628
c56971e85496 FIX: Arguments when calling .getvarl() and .getvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 625
diff changeset
512 self.assertTrue(cfg.getvarl(u"non", u"existing", u"key",
625
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
513 default=dflt) is dflt)
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
514
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
515 def test15c_getvarl_s_with_original_default(self):
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
516 # The default must be the original and not a copy
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
517 dflt = {"foo3": "bar3"}
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
518 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
628
c56971e85496 FIX: Arguments when calling .getvarl() and .getvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 625
diff changeset
519 self.assertTrue(cfg.getvarl_s(u"non", u"existing", u"key4",
625
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
520 default=dflt) is dflt)
f167f8db4624 A unittest for the assertion, that a given default must be returned as identical object and not as copy
Franz Glasner <fzglas.hg@dom66.de>
parents: 619
diff changeset
521
629
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
522 def test15d_getvarl_s_substituting_error_with_original_default(self):
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
523 dflt = {"foo4": "bar4"}
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
524 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
525 # key exists ...
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
526 cfg.getvarl(u"intl", u"localedir")
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
527 # ... but cannot interpolated
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
528 self.assertTrue(cfg.getvarl_s(u"intl", u"localedir",
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
529 default=dflt) is dflt)
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
530
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
531 def test16_getintvar_s_with_default(self):
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
532 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
533 self.assertEqual(9999, cfg.getintvar_s("non.existing.key",
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
534 default=9999))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
535 def test17_getintvar_s_with_default(self):
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
536 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
537 self.assertFalse(cfg.getboolvar_s("non.existing.key",
372
ac3e3cd6faae FIX: 4ff02a4f401a made a somewhat wrong fix for Python 2.7: now the real fix takes into account that all text types are supposed to be Unicode in Python 2
Franz Glasner <fzglas.hg@dom66.de>
parents: 371
diff changeset
538 default=u('false')))
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
539
370
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
540 def test18_getfirstvar_nonexisting(self):
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
541 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
542 self.assertRaises(
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
543 KeyError,
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
544 cfg.getfirstvar,
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
545 "db.non.existing.key",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
546 "db.non.existing.key2")
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
547
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
548 def test19_getfirstvar_nonexisting_default(self):
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
549 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
550 self.assertIsNone(cfg.getfirstvar("db.non.existing.key",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
551 "db.non.existing.key2",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
552 "intl.non.existing",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
553 default=None))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
554
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
555 def test20_getfirstvar_existing(self):
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
556 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
557 self.assertEqual("test-configmix", cfg.getfirstvar("intl.domain"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
558 self.assertEqual("test-configmix", cfg.getfirstvar("intl.domain",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
559 "intl.fallback"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
560 self.assertEqual("de", cfg.getfirstvar("intl.fallback",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
561 "intl.domain",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
562 default=None))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
563
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
564 self.assertEqual("de", cfg.getfirstvar("intl.non.existing",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
565 "intl.fallback",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
566 default=None))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
567
647
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
568 def test20a_getfirstvar_existing_without_cache(self):
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
569 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
570 cfg.disable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
571 self.assertEqual("test-configmix", cfg.getfirstvar("intl.domain"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
572 self.assertEqual("test-configmix", cfg.getfirstvar("intl.domain",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
573 "intl.fallback"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
574 self.assertEqual("de", cfg.getfirstvar("intl.fallback",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
575 "intl.domain",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
576 default=None))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
577
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
578 self.assertEqual("de", cfg.getfirstvar("intl.non.existing",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
579 "intl.fallback",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
580 default=None))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
581
371
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
582 def test21_getfirstvar_s_existing(self):
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
583 cfg = self._load(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
584 os.path.join(TESTDATADIR, "conf20.yml"),
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
585 os.path.join(TESTDATADIR, "conf21.yml"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
586 self.assertEqual(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
587 os.getcwd()+"/locale",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
588 cfg.getfirstvar_s("intl.non.existing", "intl.localedir"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
589 self.assertEqual(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
590 os.getcwd()+"/locale",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
591 cfg.getfirstvar_s("intl.localedir", "intl.non.existing"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
592
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
593 def test22_getfirstvar_s_non_existing(self):
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
594 cfg = self._load(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
595 os.path.join(TESTDATADIR, "conf20.yml"),
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
596 os.path.join(TESTDATADIR, "conf21.yml"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
597 self.assertIsNone(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
598 cfg.getfirstvar_s("intl.non.existing", "intl.non.existing2",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
599 default=None))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
600 self.assertRaises(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
601 KeyError,
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
602 cfg.getfirstvar_s,
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
603 "intl.non.existing",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
604 "intl.non.existing2")
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
605
647
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
606 def test22a_getfirstvar_s_non_existing_without_cache(self):
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
607 cfg = self._load(
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
608 os.path.join(TESTDATADIR, "conf20.yml"),
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
609 os.path.join(TESTDATADIR, "conf21.yml"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
610 cfg.disable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
611 self.assertIsNone(
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
612 cfg.getfirstvar_s("intl.non.existing", "intl.non.existing2",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
613 default=None))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
614 self.assertRaises(
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
615 KeyError,
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
616 cfg.getfirstvar_s,
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
617 "intl.non.existing",
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
618 "intl.non.existing2")
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
619
373
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
620 def test23_getfirstintvar_s_nonexisting(self):
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
621 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
622 self.assertIsNone(cfg.getfirstintvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
623 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
624 "intl.non.existing",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
625 default=None))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
626 self.assertRaises(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
627 KeyError,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
628 cfg.getfirstintvar_s,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
629 "db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
630 "db.non.exksting.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
631 "intl.non.existing")
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
632
457
e3ae8092eaf3 FIX: unittest: duplicate name of test-method removed
Franz Glasner <fzglas.hg@dom66.de>
parents: 456
diff changeset
633 def test23_getfirstintvar_s_nonexisting_default(self):
373
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
634 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
635 self.assertEqual(20,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
636 cfg.getfirstintvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
637 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
638 "intl.non.existing",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
639 default=u("20")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
640 self.assertEqual(30,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
641 cfg.getfirstintvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
642 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
643 "intl.non.existing",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
644 default=30))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
645 self.assertRaises(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
646 KeyError,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
647 cfg.getfirstintvar_s,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
648 "db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
649 "db.non.exksting.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
650 "intl.non.existing")
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
651
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
652 def test24_getfirstintvar_s_existing(self):
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
653 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
654 self.assertEqual(10,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
655 cfg.getfirstintvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
656 "intl.cache.items",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
657 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
658 default=u("20")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
659
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
660 def test25_getfirstboolvar_s_nonexisting(self):
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
661 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
662 self.assertFalse(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
663 cfg.getfirstboolvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
664 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
665 "db.engines.rw.no-echo",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
666 default=u("false")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
667 self.assertTrue(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
668 cfg.getfirstboolvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
669 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
670 "db.engines.rw.no-echo",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
671 default=True))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
672 self.assertRaises(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
673 KeyError,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
674 cfg.getfirstboolvar_s,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
675 "db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
676 "db.non.exksting.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
677 "b.engines.rw.no-echo")
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
678
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
679 def test26_getfirstboolvar_s_existing(self):
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
680 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
681 self.assertFalse(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
682 cfg.getfirstboolvar_s("db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
683 "db.engines.rw.echo",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
684 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
685 default=u("true")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
686
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
687 def test27_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
688 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
689 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
690 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
691 cfg.getfirstvarl,
492
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
692 *[["db", "non", "existing", "key"],
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
693 ("db", "non", "existing", "key2")])
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
694
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
695 def test27b_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
696 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
697 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
698 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
699 cfg.getfirstvarl,
492
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
700 *[{"namespace": None, "path": ["db", "non", "existing", "key"]},
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
701 {"namespace": None, "path": ["db", "non", "existing", "key2"]}])
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
702
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
703 def test28_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
704 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
705 self.assertIsNone(cfg.getfirstvarl(
492
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
706 *[["db", "non", "existing", "key"],
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
707 ("db", "non", "existing", "key2")],
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
708 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
709
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
710 def test28b_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
711 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
712 self.assertIsNone(cfg.getfirstvarl(
492
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
713 *[{"namespace": None, "path": ["db", "non", "existing", "key"]},
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
714 {"namespace": None, "path": ("db", "non", "existing", "key2")}],
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
715 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
716
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
717 def test29_getfirstvarl_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
718 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
719 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
720 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
721 cfg.getfirstvarl(*(("intl", "domain"),)))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
722 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
723 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
724 cfg.getfirstvarl(*(("intl", "domain"), ("intl", "fallback"))))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
725 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
726 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
727 cfg.getfirstvarl(*[["intl", "fallback"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
728 ["intl", "domain"]],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
729 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
730 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
731 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
732 cfg.getfirstvarl(*[["intl", "non", "existing"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
733 ["intl", "fallback"]],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
734 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
735
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
736 def test29b_getfirstvarl_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
737 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
738 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
739 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
740 cfg.getfirstvarl(*({"namespace": None,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
741 "path": ("intl", "domain")},)))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
742 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
743 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
744 cfg.getfirstvarl(*({"namespace": None,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
745 "path": ("intl", "domain")},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
746 {"namespace": None, "path": ("intl", "fallback")})))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
747 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
748 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
749 cfg.getfirstvarl(*[{"namespace": None, "path": ["intl", "fallback"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
750 {"namespace": None, "path": ["intl", "domain"]}],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
751 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
752 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
753 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
754 cfg.getfirstvarl(*[{"namespace": None, "path": ["intl", "non", "existing"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
755 {"namespace": None, "path": ["intl", "fallback"]}],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
756 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
757
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
758 def test30_getfirstvarl_s_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
759 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
760 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
761 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
762 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
763 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
764 cfg.getfirstvarl_s(*[["intl", "non", "existing"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
765 ["intl", "localedir"]]))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
766 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
767 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
768 cfg.getfirstvarl_s(*[["intl", "localedir"], ["intl", "non", "existing"]]))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
769
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
770 def test30b_getfirstvarl_s_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
771 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
772 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
773 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
774 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
775 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
776 cfg.getfirstvarl_s(*[{"namespace": None, "path": ["intl", "non", "existing"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
777 {"namespace": None, "path": ["intl", "localedir"]}]))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
778 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
779 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
780 cfg.getfirstvarl_s(*[{"namespace": None, "path": ["intl", "localedir"]}, {"namespace": None, "path": ["intl", "non", "existing"]}]))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
781
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
782 def test31_getfirstvar_s_non_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
783 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
784 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
785 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
786 self.assertIsNone(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
787 cfg.getfirstvarl_s(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
788 *[["intl", "non", "existing"], ["intl", "non", "existing2"]],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
789 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
790 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
791 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
792 cfg.getfirstvarl_s,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
793 ["intl" ,"non", "existing"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
794 ["intl", "non", "existing2"])
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
795
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
796 def test31b_getfirstvar_s_non_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
797 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
798 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
799 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
800 self.assertIsNone(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
801 cfg.getfirstvarl_s(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
802 *[{"namespace": None, "path": ["intl", "non", "existing"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
803 {"namespace": None, "path": ["intl", "non", "existing2"]}],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
804 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
805 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
806 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
807 cfg.getfirstvarl_s,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
808 {"namespace": None, "path": ["intl" ,"non", "existing"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
809 {"namespace": None, "path": ["intl", "non", "existing2"]})
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
810
390
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
811 def test32_getfirstintvarl_s_nonexisting(self):
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
812 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
813 self.assertIsNone(cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
814 *(("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
815 ("db", "non", "existing", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
816 ("intl", "non", "existing")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
817 default=None))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
818 self.assertRaises(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
819 KeyError,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
820 cfg.getfirstintvarl_s,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
821 ("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
822 ("db", "non", "exksting", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
823 ("intl", "non", "existing"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
824
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
825 def test33_getfirstintvarl_s_nonexisting(self):
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
826 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
827 self.assertEqual(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
828 20,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
829 cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
830 *(("db", "non", "existing", ".key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
831 ("db", "non", "existing", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
832 ("intl", "non", "existing")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
833 default=u("20")))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
834 self.assertEqual(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
835 30,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
836 cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
837 *(("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
838 ("db", "non", "existing", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
839 ("intl", "non", "existing")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
840 default=30))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
841 self.assertRaises(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
842 KeyError,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
843 cfg.getfirstintvarl_s,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
844 ("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
845 ("db", "non", "exksting", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
846 ("intl", "non", "existing"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
847
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
848 def test34_getfirstintvarl_s_existing(self):
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
849 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
850 self.assertEqual(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
851 10,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
852 cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
853 *(("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
854 ("intl", "cache", "items"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
855 ("db", "non", "existing", "key2")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
856 default=u("20")))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
857
418
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
858 def test35_keysl(self):
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
859 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
860 self.assertEqual(
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
861 set([u"domain", u"localedir", u"fallback", u"cache",]),
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
862 set(cfg.getkeysl(u"intl")))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
863
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
864 def test36_keys(self):
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
865 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
866 self.assertEqual(
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
867 set([u"name", u"pwd"]),
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
868 set(cfg.getkeys(u"db.user")))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
869
419
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
870 def test37_get_root_object(self):
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
871 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
872 self.assertTrue(cfg.getvarl() is cfg)
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
873
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
874 def test38_get_root_object(self):
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
875 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
876 self.assertTrue(cfg.getvar(u"") is cfg)
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
877
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
878 def test39_get_root_keys(self):
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
879 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
880 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
881 set([u"key1", u"key2", u"tree1"]),
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
882 set(cfg.getkeys(u"")))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
883
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
884 def test39b_get_root_keys(self):
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
885 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
886 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
887 set([u"key1", u"key2", u"tree1"]),
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
888 set(cfg.getkeysl()))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
889
439
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
890 def test40_contains_with_string(self):
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
891 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
892 self.assertTrue(u"tree1" in cfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
893 self.assertFalse(u"non-existing-tree1" in cfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
894
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
895 def test41_contains_with_path(self):
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
896 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
897 self.assertTrue((u"tree1", u"tree2") in cfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
898 self.assertFalse((u"tree1", u"non-existing-tree2") in cfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
899
442
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
900 def test43_get_with_string(self):
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
901 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
902 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
903 u"in the root namespace",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
904 cfg.get(u"key1"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
905 self.assertTrue(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
906 cfg.get(u"key1-not", default=None) is None)
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
907
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
908 def test43_get_with_path(self):
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
909 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
910 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
911 0x20,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
912 cfg.get((u"tree1", u"key3")))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
913 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
914 0x1,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
915 cfg.get((u"no", u"key"), default=0x1))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
916
458
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
917 def test44_iterator(self):
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
918 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
919 s = []
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
920 for k in cfg:
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
921 s.append(k)
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
922 s.sort()
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
923
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
924 self.assertEqual([u"key1", u"key2", u"tree1"], s)
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
925
506
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
926 def test45_clear_cache(self):
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
927 cfg = self._load(os.path.join(TESTDATADIR, "conf10.py"))
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
928 cfg.clear_cache()
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
929
647
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
930 def test46_reenable_cache(self):
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
931 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
932 self.assertTrue(cfg.getvarl() is cfg)
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
933 cfg.disable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
934 self.assertTrue(cfg.getvarl() is cfg)
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
935 cfg.clear_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
936 self.assertTrue(cfg.getvarl() is cfg)
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
937 cfg.enable_cache()
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
938 self.assertTrue(cfg.getvarl() is cfg)
df58983f28a2 Allow to disable the internal caching in configmix.
Franz Glasner <fzglas.hg@dom66.de>
parents: 642
diff changeset
939
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
940
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
941 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
942
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
943 def setUp(self):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
944 self._load = configmix.load
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
945
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
946 def test0100_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
947 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
948 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
949 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
950
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
951 def test0101_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
952 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
953 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
954 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
955
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
956
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
957 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
958
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
959 def setUp(self):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
960 self._load = configmix.safe_load
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
961
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
962 def test0100_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
963 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
964 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
965 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
966
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
967 def test0101_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
968 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
969 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
970 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
971
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
972
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
973 class T04CustomExtension(unittest.TestCase):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
974
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
975 def setUp(self):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
976 self._reset()
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
977
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
978 def tearDown(self):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
979 self._reset()
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
980
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
981 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
982 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
983 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
984 configmix.set_assoc(pat, fmode)
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
985
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
986 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
987 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
988 cfg = configmix.load(
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
989 os.path.join(TESTDATADIR, "conf1.ini"),
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
990 os.path.join(TESTDATADIR, "conf30.conf"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
991 self.assertEqual(u("Umlaute: ÄÖÜäöüß"), cfg.getvar_s("key7"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
992 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
993
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
994 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
995 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
996 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
997
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
998 def _ld():
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
999 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
1000 os.path.join(TESTDATADIR, "conf30.conf"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1001
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1002 self.assertRaises(ValueError, _ld)
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1003
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
1004 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
1005 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
1006 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
1007 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
1008
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
1009 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
1010 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
1011 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
1012 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
1013
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
1014 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
1015 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
1016 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
1017 # 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
1018 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
1019
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
1020 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
1021 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
1022 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
1023 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
1024
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1025 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
1026 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
1027 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
1028 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
1029 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
1030
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1031 def _g():
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1032 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
1033
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1034 self.assertRaises(KeyError, _g)
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1035
183
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1036 def test04_determine_mode(self):
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1037 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1038 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
1039 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
1040 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
1041
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1042 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
1043
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1044 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
1045 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1046 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
1047
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1048 def _ld():
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1049 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
1050
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1051 self.assertRaises(ValueError, _ld)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1052
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1053 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
1054 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1055 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
1056
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1057 def _ld():
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1058 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
1059
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1060 self.assertRaises(KeyError, _ld)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
1061
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
1062
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
1063 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
1064
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
1065 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
1066 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
1067
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
1068 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
1069 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
1070
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
1071 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
1072 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
1073 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
1074 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
1075
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
1076 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
1077 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
1078 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
1079
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1080 def test01_expand_int_ini_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1081 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1082 self.assertEqual(2, cfg.getvarl_s("key100"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1083
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
1084 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
1085 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
1086 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
1087
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1088 def test02_expand_int_indirect_ini_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1089 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1090 self.assertEqual(2, cfg.getvarl_s("key102"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1091
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
1092 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
1093 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
1094 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
1095
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1096 def test03_expand_int2str_ini_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1097 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1098 self.assertEqual("the 2 value", cfg.getvarl_s("key101"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1099
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
1100 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
1101 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
1102 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
1103
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1104 def test04_expand_intint2str_ini_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1105 cfg = configmix.load(os.path.join(TESTDATADIR, "conf1.ini"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1106 self.assertEqual("22", cfg.getvarl_s("key103"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1107
516
ad1e630ba736 FIX: Do not filter-out all False values then interpolating (zero int, boolean False)
Franz Glasner <fzglas.hg@dom66.de>
parents: 506
diff changeset
1108 def test05_expand_falsy_values(self):
ad1e630ba736 FIX: Do not filter-out all False values then interpolating (zero int, boolean False)
Franz Glasner <fzglas.hg@dom66.de>
parents: 506
diff changeset
1109 cfg = configmix.load(os.path.join(TESTDATADIR, "conf20.yml"))
ad1e630ba736 FIX: Do not filter-out all False values then interpolating (zero int, boolean False)
Franz Glasner <fzglas.hg@dom66.de>
parents: 506
diff changeset
1110 self.assertEqual(
ad1e630ba736 FIX: Do not filter-out all False values then interpolating (zero int, boolean False)
Franz Glasner <fzglas.hg@dom66.de>
parents: 506
diff changeset
1111 u"AFalseB0C",
ad1e630ba736 FIX: Do not filter-out all False values then interpolating (zero int, boolean False)
Franz Glasner <fzglas.hg@dom66.de>
parents: 506
diff changeset
1112 cfg.getvar_s("test-falsy-values.v"))
ad1e630ba736 FIX: Do not filter-out all False values then interpolating (zero int, boolean False)
Franz Glasner <fzglas.hg@dom66.de>
parents: 506
diff changeset
1113
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
1114
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1115 class T06References(unittest.TestCase):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1116
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1117 def setUp(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1118 self._reset()
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1119 self._cfg = configmix.load(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1120 os.path.join(TESTDATADIR, "conf20.yml"),
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1121 os.path.join(TESTDATADIR, "conf21.yml"),
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1122 os.path.join(TESTDATADIR, "conf22.ini"),
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1123 os.path.join(TESTDATADIR, "conf23.json"),
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1124 os.path.join(TESTDATADIR, "conf24.toml"),
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1125 os.path.join(TESTDATADIR, "reference-style.yml"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1126
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1127 def tearDown(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1128 self._reset()
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1129
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1130 def _reset(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1131 configmix.clear_assoc()
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1132 for pat, fmode in configmix.DEFAULT_ASSOC:
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1133 configmix.set_assoc(pat, fmode)
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1134
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1135 def test01_reference_without_expansions(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1136 self.assertTrue(isinstance(self._cfg.getvar("wsgi.profiler"), dict))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1137 self.assertTrue(isinstance(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1138 self._cfg.getvar("wsgi.profiler.params"), dict))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1139 self.assertEqual("werkzeug",
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1140 self._cfg.getvar("wsgi.profiler.params.type"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1141 self.assertTrue(self._cfg.getvar("wsgi.profiler.params.params.evalex"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1142 self.assertEqual(self._cfg.getvar("wsgi.debugger"),
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1143 self._cfg.getvar("wsgi.profiler.params"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1144
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1145 def test01_reference_without_expansions_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1146 self.assertTrue(isinstance(self._cfg.getvarl("wsgi", "profiler"), dict))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1147 self.assertTrue(isinstance(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1148 self._cfg.getvarl("wsgi", "profiler", "params"), dict))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1149 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1150 "werkzeug",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1151 self._cfg.getvarl("wsgi", "profiler", "params", "type"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1152 self.assertTrue(self._cfg.getvarl(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1153 "wsgi", "profiler", "params", "params", "evalex"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1154 self.assertEqual(self._cfg.getvarl("wsgi", "debugger"),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1155 self._cfg.getvarl("wsgi", "profiler", "params"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1156
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1157 def test02_reference__with_expansions(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1158 self.assertTrue(isinstance(self._cfg.getvar_s("wsgi.profiler"), dict))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1159 self.assertTrue(isinstance(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1160 self._cfg.getvar_s("wsgi.profiler.params"), dict))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1161 self.assertTrue(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1162 self._cfg.getvar_s("wsgi.profiler.params.params.evalex"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1163 self.assertEqual("werkzeug",
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1164 self._cfg.getvar_s("wsgi.profiler.params.type"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1165
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1166 def test02_reference__with_expansions_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1167 self.assertTrue(isinstance(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1168 self._cfg.getvarl_s("wsgi", "profiler"), dict))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1169 self.assertTrue(isinstance(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1170 self._cfg.getvarl_s("wsgi", "profiler", "params"), dict))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1171 self.assertTrue(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1172 self._cfg.getvarl_s("wsgi", "profiler", "params", "params", "evalex"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1173 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1174 "werkzeug",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1175 self._cfg.getvarl_s("wsgi", "profiler", "params", "type"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1176
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1177 def test03_direct_attribute_access_to_expanded_references(self):
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1178 self.assertEqual(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1179 u"werkzeug",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1180 self._cfg.wsgi.profiler.params.type)
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1181
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1182 def test03b_dict_like_access_expands_references(self):
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1183 self.assertEqual(
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1184 u"werkzeug",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1185 self._cfg[(u"wsgi", u"profiler", u"params", u"type")])
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1186
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1187 def test03c_dict_like_access_with_single_string_key(self):
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1188 self.assertTrue(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1189 u"profiler" in self._cfg[u"wsgi"])
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1190
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1191 def test04_indirect_recursive_references(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1192 self.assertEqual(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1193 "werkzeug",
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1194 self._cfg.getvar_s("testref.here.params.type"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1195 self.assertTrue(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1196 self._cfg.getvar_s("testref.here.params.params.evalex"))
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1197
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1198 def test04_indirect_recursive_references_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1199 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1200 "werkzeug",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1201 self._cfg.getvarl_s("testref", "here", "params", "type"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1202 self.assertTrue(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1203 self._cfg.getvarl_s("testref", "here", "params", "params", "evalex"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1204
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1205 def test05_recursive_expansion(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1206 c = self._cfg.getvar_s("testref")
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1207 self.assertTrue(c["here"]["params"]["params"]["evalex"])
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1208
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1209 def test05_recursive_expansion_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1210 c = self._cfg.getvarl_s("testref")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1211 self.assertTrue(c["here"]["params"]["params"]["evalex"])
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1212
309
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1213 def test06_no_recursive_expansion_in_getvar_parents(self):
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1214 v = self._cfg.getvar("wsgi.profiler")
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1215 self.assertEqual(
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1216 "{{ref:#wsgi.debugger}}",
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1217 v["params"])
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1218
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1219 def test06_no_recursive_expansion_in_getvar_parents_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1220 v = self._cfg.getvarl("wsgi", "profiler")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1221 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1222 "{{ref:#wsgi.debugger}}",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1223 v["params"])
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1224
312
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1225 def test07_explicit_reference_expansion(self):
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1226 v = self._cfg.getvar("wsgi.profiler")
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1227 self.assertTrue(isinstance(self._cfg.expand_if_reference(v["params"]),
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1228 dict))
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1229
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1230 def test07_explicit_reference_expansion_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1231 v = self._cfg.getvarl("wsgi", "profiler")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1232 self.assertTrue(isinstance(self._cfg.expand_if_reference(v["params"]),
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1233 dict))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1234
313
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1235 def test08_explicit_indirect_expansion_through_value(self):
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1236 v = self._cfg.getvar_s("expand-ref-value.key0")
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1237 self.assertTrue(isinstance(v, bool))
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1238 self.assertTrue(v)
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1239 # but not that .getvar does not **not**
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1240 v2 = self._cfg.getvar("expand-ref-value.key0")
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1241 self.assertEqual("{{testref.here.params.params.evalex}}", v2)
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1242
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1243 def test08_explicit_indirect_expansion_through_value_l(self):
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1244 v = self._cfg.getvarl_s("expand-ref-value", "key0")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1245 self.assertTrue(isinstance(v, bool))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1246 self.assertTrue(v)
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1247 # but not that .getvar does not **not**
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1248 v2 = self._cfg.getvarl("expand-ref-value", "key0")
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1249 self.assertEqual("{{testref.here.params.params.evalex}}", v2)
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1250
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1251
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1252 class T07Quoting(unittest.TestCase):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1253
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1254 def setUp(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1255 self._reset()
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1256 self._cfg = configmix.load(os.path.join(TESTDATADIR, "quoting.yml"))
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1257
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1258 def tearDown(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1259 self._reset()
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1260
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1261 def _reset(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1262 configmix.clear_assoc()
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1263 for pat, fmode in configmix.DEFAULT_ASSOC:
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1264 configmix.set_assoc(pat, fmode)
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1265
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1266 def test_getvar(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1267 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1268 "value",
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1269 self._cfg.getvar("%x23%x3a%x7c%x25%x2e.%x2e.%x3a.%x25.%x7c./.%x23"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1270 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1271 "value",
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1272 self._cfg.getvar(
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1273 "%u0023%u003a%u007c%u0025%u002e.%u002e.%u003a.%u0025.%u007c./.%u0023"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1274 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1275 "value",
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1276 self._cfg.getvar(
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1277 "%U00000023%U0000003a%U0000007c%U00000025%U0000002e.%U0000002e.%U0000003a.%U00000025.%U0000007c./.%U00000023"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1278
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1279 def test_getvar_s(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1280 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1281 "value",
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1282 self._cfg.getvar_s("%x23%x3a%x7c%x25%x2e.%x2e.%x3a.%x25.%x7c./.%x23"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1283 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1284 "value",
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1285 self._cfg.getvar_s(
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1286 "%u0023%u003a%u007c%u0025%u002e.%u002e.%u003a.%u0025.%u007c./.%u0023"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1287 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1288 "value",
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1289 self._cfg.getvar_s(
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1290 "%U00000023%U0000003a%U0000007c%U00000025%U0000002e.%U0000002e.%U0000003a.%U00000025.%U0000007c./.%U00000023"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1291
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1292 def test_getvarl(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1293 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1294 "value",
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1295 self._cfg.getvarl("#:|%.", ".", ":", "%", "|", "/", "#"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1296
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1297 def test_getvarl_s(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1298 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1299 "value",
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1300 self._cfg.getvarl_s("#:|%.", ".", ":", "%", "|", "/", "#"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1301
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1302 def test_interpolation1(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1303 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1304 "value",
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1305 self._cfg.getvarl_s("events", "qc-2021.1-5G-summit", "xname"))
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1306
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1307 def test_interpolation2(self):
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1308 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1309 "value",
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1310 self._cfg.getvar_s("events.qc-2021%x2e1-5G-summit.xname"))
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1311
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1312 def test_reference1(self):
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1313 self.assertTrue(
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1314 isinstance(
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1315 self._cfg.getvar_s("events.qc-2021%x2e1-5G-summit.xref"),
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1316 dict))
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1317
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1318 def test_reference2(self):
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1319 self.assertEqual(
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1320 "value",
325
ab33d51f3412 By default quote the "#" character also because it is typically a comment in all the configuration file formats.
Franz Glasner <fzglas.hg@dom66.de>
parents: 323
diff changeset
1321 self._cfg.getvar_s("events.qc-2021%x2e1-5G-summit.xref.%x23"))
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1322
329
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1323 def test_namespace_quoting(self):
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1324 v1 = self._cfg.getvar("PY:version")
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1325 v2 = self._cfg.getvar("P%x59:version")
331
4f31e69d1ad5 Tests: for namespace quoting use some encoding variants also
Franz Glasner <fzglas.hg@dom66.de>
parents: 330
diff changeset
1326 v3 = self._cfg.getvar("%U00000050Y:version")
4f31e69d1ad5 Tests: for namespace quoting use some encoding variants also
Franz Glasner <fzglas.hg@dom66.de>
parents: 330
diff changeset
1327 v4 = self._cfg.getvar("%x50%u0059:version")
332
5c2c72d26b63 Tests: add a test for variable interpolation with a quoted namespace
Franz Glasner <fzglas.hg@dom66.de>
parents: 331
diff changeset
1328 v5 = self._cfg.getvarl_s("events", "qc-2021.1-5G-summit", "xver")
338
933df3ffd428 Tests: add some more asserte to test_namespace_quoting
Franz Glasner <fzglas.hg@dom66.de>
parents: 337
diff changeset
1329 v6 = self._cfg.getvar_s("events.qc-2021%x2e1-5G-summit.xver")
329
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1330 self.assertEqual(v1, v2)
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1331 self.assertEqual(v1, v3)
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1332 self.assertEqual(v1, v4)
337
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 336
diff changeset
1333 self.assertEqual(v1, v5)
338
933df3ffd428 Tests: add some more asserte to test_namespace_quoting
Franz Glasner <fzglas.hg@dom66.de>
parents: 337
diff changeset
1334 self.assertEqual(v1, v6)
320
98490375d90c Allow variable name quoting to be used in .getvar() and .getvar_s() and references
Franz Glasner <fzglas.hg@dom66.de>
parents: 314
diff changeset
1335
340
176e22110fc5 docs, tests: notes and additional tests when quoting the "ref" namespace name
Franz Glasner <fzglas.hg@dom66.de>
parents: 338
diff changeset
1336 def test_direct_ref_namespace_quoting(self):
176e22110fc5 docs, tests: notes and additional tests when quoting the "ref" namespace name
Franz Glasner <fzglas.hg@dom66.de>
parents: 338
diff changeset
1337 v = self._cfg.getvar_s("re%x66:#%x23%u003a%x7c%U00000025%x2e.%x2e.%x3a.%x25.%x7c./.%x23")
176e22110fc5 docs, tests: notes and additional tests when quoting the "ref" namespace name
Franz Glasner <fzglas.hg@dom66.de>
parents: 338
diff changeset
1338 self.assertEqual("value", v)
176e22110fc5 docs, tests: notes and additional tests when quoting the "ref" namespace name
Franz Glasner <fzglas.hg@dom66.de>
parents: 338
diff changeset
1339
330
Franz Glasner <fzglas.hg@dom66.de>
parents: 329
diff changeset
1340
395
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1341 class T08Jailed(unittest.TestCase):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1342
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1343 def setUp(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1344 pass
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1345
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1346 def tearDown(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1347 self._reset()
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1348
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1349 def _reset(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1350 configmix.clear_assoc()
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1351 for pat, fmode in configmix.DEFAULT_ASSOC:
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1352 configmix.set_assoc(pat, fmode)
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1353
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1354 def test_root(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1355 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1356 jcfg = cfg.jailed(root=u"tree1")
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1357
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1358 self.assertTrue(jcfg.getvarl(u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1359 self.assertTrue(jcfg.getvarl_s(u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1360 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1361 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1362 jcfg.getvarl(u"tree2", u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1363 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1364 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1365 jcfg.getvarl_s(u"tree2", u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1366
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1367 self.assertTrue(jcfg.getvar(u"tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1368 self.assertTrue(jcfg.getvar_s(u"tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1369 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1370 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1371 jcfg.getvar(u"tree2.key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1372 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1373 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1374 jcfg.getvar_s(u"tree2.key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1375
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1376 def test_root2(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1377 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1378 jcfg = cfg.jailed(root=u"tree1.tree2")
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1379
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1380 self.assertTrue(jcfg.getvarl(u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1381 self.assertTrue(jcfg.getvarl_s(u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1382 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1383 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1384 jcfg.getvarl(u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1385 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1386 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1387 jcfg.getvarl_s(u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1388
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1389 self.assertTrue(jcfg.getvar(u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1390 self.assertTrue(jcfg.getvar_s(u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1391 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1392 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1393 jcfg.getvar(u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1394 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1395 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1396 jcfg.getvar_s(u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1397
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1398 def test_root_non_existing_raises(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1399 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1400 self.assertRaises(KeyError, cfg.jailed, root=u"tree-non-existing")
456
d6be95841380 Add a test for proper exception formatting when .rebind() raises a KeyError
Franz Glasner <fzglas.hg@dom66.de>
parents: 448
diff changeset
1401 self.assertRaises(
d6be95841380 Add a test for proper exception formatting when .rebind() raises a KeyError
Franz Glasner <fzglas.hg@dom66.de>
parents: 448
diff changeset
1402 KeyError, cfg.jailed, rootpath=(u"non", u"existing", u"tree"))
395
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1403
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1404 def test_rootpath(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1405 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1406 jcfg = cfg.jailed(rootpath=[u"tree1"])
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1407
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1408 self.assertTrue(jcfg.getvarl(u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1409 self.assertTrue(jcfg.getvarl_s(u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1410 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1411 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1412 jcfg.getvarl_s(u"tree2", u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1413
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1414 self.assertTrue(jcfg.getvar(u"tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1415 self.assertTrue(jcfg.getvar_s(u"tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1416 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1417 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1418 jcfg.getvar_s(u"tree2.key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1419
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1420 def test_rootpath_non_existing_raises(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1421 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1422 self.assertRaises(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1423 KeyError, cfg.jailed, rootpath=[u"tree-non-existing"])
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1424
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1425 def test_root_empty(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1426 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
416
2abde0d3c735 FIX: Handle .jailed() with an empty "root" properly
Franz Glasner <fzglas.hg@dom66.de>
parents: 412
diff changeset
1427 jcfg = cfg.jailed(root=u"")
395
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1428
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1429 self.assertFalse(jcfg._path)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1430 self.assertFalse(jcfg._pathstr)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1431 self.assertTrue(jcfg._path is not None)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1432 self.assertTrue(jcfg._pathstr is not None)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1433
395
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1434 self.assertTrue(jcfg.getvarl(u"tree1", u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1435 self.assertTrue(jcfg.getvarl_s(u"tree1", u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1436 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1437 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1438 jcfg.getvarl_s(u"tree1", u"tree2", u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1439
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1440 self.assertTrue(jcfg.getvar(u"tree1.tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1441 self.assertTrue(jcfg.getvar_s(u"tree1.tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1442 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1443 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1444 jcfg.getvar_s(u"tree1.tree2.key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1445
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1446 def test_rootpath_empty(self):
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1447 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1448 jcfg = cfg.jailed(rootpath=tuple())
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1449
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1450 self.assertFalse(jcfg._path)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1451 self.assertFalse(jcfg._pathstr)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1452 self.assertTrue(jcfg._path is not None)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1453 self.assertTrue(jcfg._pathstr is not None)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1454
395
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1455 self.assertTrue(jcfg.getvarl(u"tree1", u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1456 self.assertTrue(jcfg.getvarl_s(u"tree1", u"tree2", u"key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1457 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1458 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1459 jcfg.getvarl_s(u"tree1", u"tree2", u"key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1460
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1461 self.assertTrue(jcfg.getvar(u"tree1.tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1462 self.assertTrue(jcfg.getvar_s(u"tree1.tree2.key5"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1463 self.assertEqual(
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1464 u"get this as `tree1.tree2.key4'",
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1465 jcfg.getvar_s(u"tree1.tree2.key4"))
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1466
398
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1467 def test_rootpath_getfirstvar_nonexisting(self):
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1468 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1469 jcfg = cfg.jailed(rootpath=(u"tree1",))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1470
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1471 self.assertIsNone(jcfg.getfirstvarl(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1472 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1473 (u"tree2", u"no-key")],
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1474 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1475 self.assertIsNone(jcfg.getfirstvarl_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1476 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1477 (u"tree2", u"no-key")],
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1478 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1479 self.assertIsNone(jcfg.getfirstvar(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1480 u"a.b", u"tree2.no-key",
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1481 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1482 self.assertIsNone(jcfg.getfirstvar_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1483 u"a.b", u"tree2.no-key",
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1484 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1485
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1486 def test_rootpath_getfirstvar_raising(self):
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1487 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1488 jcfg = cfg.jailed(rootpath=(u"tree1",))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1489
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1490 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1491 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1492 jcfg.getfirstvarl,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1493 (u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1494 (u"tree2", u"no-key"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1495 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1496 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1497 jcfg.getfirstvarl_s,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1498 (u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1499 (u"tree2", u"no-key"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1500 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1501 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1502 jcfg.getfirstvar,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1503 u"a.b", u"tree2.no-key")
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1504 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1505 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1506 jcfg.getfirstvar_s,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1507 u"a.b", u"tree2.no-key")
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1508
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1509 def test_rootpath_getfirstvar_existing(self):
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1510 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1511 jcfg = cfg.jailed(rootpath=(u"tree1",))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1512
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1513 self.assertEqual(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1514 u"get this as `tree1.tree2.key4'",
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1515 jcfg.getfirstvarl(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1516 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1517 (u"tree2", u"key4")]))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1518 self.assertEqual(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1519 0x20,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1520 jcfg.getfirstvarl_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1521 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1522 (u"key3", ),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1523 (u"tree2", u"key4")]))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1524 self.assertEqual(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1525 0x20,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1526 jcfg.getfirstvar(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1527 u"key1", u"key3"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1528 self.assertEqual(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1529 u"get this as `tree1.tree2.key4'",
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1530 jcfg.getfirstvar_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1531 u"a.b", u"tree2.key4", u"tree2.key5"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1532
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1533 def test_root_getfirstvar_nonexisting(self):
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1534 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1535 jcfg = cfg.jailed(root=u"tree1")
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1536
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1537 self.assertIsNone(jcfg.getfirstvarl(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1538 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1539 (u"tree2", u"no-key")],
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1540 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1541 self.assertIsNone(jcfg.getfirstvarl_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1542 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1543 (u"tree2", u"no-key")],
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1544 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1545 self.assertIsNone(jcfg.getfirstvarl_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1546 *[(u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1547 (u"tree2", u"no-key")],
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1548 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1549 self.assertIsNone(jcfg.getfirstvar_s(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1550 u"a.b", u"tree2.no-key",
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1551 default=None))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1552
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1553 def test_root_getfirstvar_raising(self):
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1554 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1555 jcfg = cfg.jailed(root=u"tree1")
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1556
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1557 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1558 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1559 jcfg.getfirstvarl,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1560 (u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1561 (u"tree2", u"no-key"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1562 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1563 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1564 jcfg.getfirstvarl_s,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1565 (u"a", u"b"),
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1566 (u"tree2", u"no-key"))
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1567 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1568 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1569 jcfg.getfirstvar,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1570 u"a.b", u"tree2.no-key")
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1571 self.assertRaises(
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1572 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1573 jcfg.getfirstvar_s,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1574 u"a.b", u"tree2.no-key")
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1575
407
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1576 def test_base_rebind(self):
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1577 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1578 self.assertFalse(cfg.is_jail)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1579
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1580 jcfg = cfg.jailed(rootpath=[])
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1581 self.assertTrue(jcfg.is_jail)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1582
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1583 self.assertTrue(jcfg.base is cfg)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1584
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1585 self.assertRaises(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1586 KeyError,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1587 jcfg.getvarl,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1588 u"tree1", u"tree2", u"no-key")
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1589 self.assertEqual(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1590 0x20,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1591 jcfg.getvar(u"tree1.key3"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1592 self.assertEqual(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1593 u"in the root namespace",
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1594 jcfg.getvar("key1"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1595
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1596 cfg2 = configmix.load(os.path.join(TESTDATADIR, "conf2.py"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1597 self.assertFalse(cfg2.is_jail)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1598
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1599 jcfg.rebind(cfg2)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1600 self.assertTrue(jcfg.base is cfg2)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1601
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1602 self.assertRaises(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1603 KeyError,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1604 jcfg.getvar,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1605 u"tree1.key3")
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1606 self.assertEqual(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1607 u"the next value",
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1608 jcfg.getvar("key1"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1609
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1610 def test_rebind_no_nesting(self):
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1611 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1612 self.assertFalse(cfg.is_jail)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1613
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1614 jcfg1 = cfg.jailed(rootpath=[])
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1615 self.assertTrue(jcfg1.is_jail)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1616 jcfg2 = cfg.jailed(rootpath=[u"tree1"])
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1617 self.assertTrue(jcfg2.is_jail)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1618
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1619 self.assertRaises(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1620 TypeError,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1621 jcfg1.rebind,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1622 jcfg2)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1623
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1624 # base is not because rebind() failed
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1625 self.assertTrue(cfg is jcfg1.base)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1626
412
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1627 def test_getbool(self):
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1628 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1629 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2"))
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1630
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1631 self.assertFalse(jcfg.getboolvar_s(u"key6"))
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1632 self.assertEqual(u"off", jcfg.getvarl_s(u"key6"))
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1633 self.assertTrue(jcfg.getvar_s(u"key6"))
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1634
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1635 def test_subjail_from_rootpath_empty(self):
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1636 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1637 jcfg = cfg.jailed(rootpath=tuple())
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1638
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1639 sjcfg = jcfg.jailed(rootpath=(u"tree1",))
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1640
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1641 self.assertTrue(sjcfg._path)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1642 self.assertTrue(sjcfg._pathstr)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1643
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1644 self.assertEqual(0x20, sjcfg.getintvar_s(u"key3"))
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1645
427
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1646 self.assertTrue(sjcfg.base is cfg)
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1647
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1648 def test_subjail_from_root_empty(self):
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1649 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1650 jcfg = cfg.jailed(root=u"")
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1651
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1652 sjcfg = jcfg.jailed(root=u"tree1")
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1653
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1654 self.assertTrue(sjcfg._path)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1655 self.assertTrue(sjcfg._pathstr)
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1656
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1657 self.assertEqual(0x20, sjcfg.getintvar_s(u"key3"))
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1658
427
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1659 self.assertTrue(sjcfg.base is cfg)
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1660
418
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1661 def test_getkeys(self):
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1662 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1663 jcfg = cfg.jailed(root=u"tree1")
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1664
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1665 self.assertEqual(
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1666 set([u"key4", u"key5", u"key6", u"key7", u"key8", u"key9"]),
418
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1667 set(jcfg.getkeysl(u"tree2")))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1668
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1669 self.assertEqual(
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1670 set([u"key4", u"key5", u"key6", u"key7", u"key8", u"key9"]),
418
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1671 set(jcfg.getkeys(u"tree2")))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1672
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1673 self.assertEqual(
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1674 set([u"key3", u"tree2"]),
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1675 set(jcfg.getkeysl()))
bb5f11abd12a Implement .getkeysl() and .getkeys() for configuration objects that iterate over all the keys of a configuration value
Franz Glasner <fzglas.hg@dom66.de>
parents: 417
diff changeset
1676
419
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1677 def test_getkeys_all_empty_paths(self):
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1678 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1679 jcfg = cfg.jailed(rootpath=tuple())
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1680
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1681 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1682 set([u"key1", u"key2", u"tree1"]),
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1683 set(jcfg.getkeysl()))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1684
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1685 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1686 set([u"key1", u"key2", u"tree1"]),
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1687 set(jcfg.getkeys(u"")))
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1688
432
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1689 def test_repr_empty_rootpath(self):
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1690 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1691 jcfg = cfg.jailed(rootpath=tuple())
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1692
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1693 self.assertEqual(
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1694 r"_JailedConfiguration(rootpath=())",
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1695 repr(jcfg))
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1696
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1697 def test_repr_non_empty_rootpath(self):
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1698 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1699 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2"))
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1700
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1701 if PY2:
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1702 self.assertEqual(
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1703 r"_JailedConfiguration(rootpath=(u'tree1', u'tree2'))",
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1704 repr(jcfg))
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1705 else:
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1706 self.assertEqual(
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1707 r"_JailedConfiguration(rootpath=('tree1', 'tree2'))",
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1708 repr(jcfg))
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1709
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1710 def test_dict_level_access_with_single_key(self):
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1711 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1712 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2"))
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1713 self.assertEqual(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1714 u"off",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1715 jcfg[u"key6"])
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1716 try:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1717 jcfg[u"key3"]
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1718 except KeyError:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1719 pass
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1720 else:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1721 self.fail("KeyError expected")
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1722
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1723 def test_dict_level_access_with_path(self):
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1724 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1725 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2"))
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1726 self.assertEqual(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1727 u"get this as `tree1.tree2.key4'",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1728 jcfg[(u"key4",)])
441
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1729 self.assertEqual(
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1730 u"get this as `tree1.tree2.key4'",
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1731 jcfg[[u"key4"]])
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1732 try:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1733 jcfg[(u"key3",)]
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1734 except KeyError:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1735 pass
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1736 else:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1737 self.fail("KeyError expected")
441
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1738 try:
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1739 jcfg[[u"key3"]]
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1740 except KeyError:
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1741 pass
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1742 else:
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1743 self.fail("KeyError expected")
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1744
439
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1745 def test_contains_with_string(self):
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1746 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1747 jcfg = cfg.jailed(rootpath=(u"tree1",))
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1748
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1749 self.assertTrue(u"key3" in jcfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1750 self.assertFalse(u"key3-not" in jcfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1751
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1752 def test_contains_with_path(self):
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1753 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1754 jcfg = cfg.jailed(rootpath=(u"tree1",))
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1755
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1756 self.assertTrue((u"key3",) in jcfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1757 self.assertFalse((u"key3-not",) in jcfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1758
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1759 self.assertTrue((u"tree2", u"key5") in jcfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1760 self.assertFalse((u"tree2", u"no-key") in jcfg)
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1761
441
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1762 self.assertTrue([u"tree2", u"key5"] in jcfg)
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1763 self.assertFalse([u"tree2", u"no-key"] in jcfg)
9d20fab53a19 FIX: Handle "list"-type keys in __contains__ and __getitem__ properly: convert to tuples for contatenation with tuple
Franz Glasner <fzglas.hg@dom66.de>
parents: 439
diff changeset
1764
442
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1765 def test_get_with_string(self):
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1766 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1767 jcfg = cfg.jailed(rootpath=(u"tree1",))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1768
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1769 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1770 0x20,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1771 jcfg.get(u"key3"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1772 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1773 0x2,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1774 jcfg.get(u"no-key3", default=0x2))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1775
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1776 def test_get_with_path(self):
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1777 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1778 jcfg = cfg.jailed(rootpath=(u"tree1",))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1779
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1780 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1781 0x20,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1782 jcfg.get((u"key3",)))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1783 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1784 0x3,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1785 jcfg.get((u"no-key",), default=0x3))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1786 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1787 u"off",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1788 jcfg.get((u"tree2", u"key6")))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1789 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1790 u"the default",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1791 jcfg.get((u"no", u"key"), default=u"the default"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1792 self.assertTrue(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1793 jcfg.get((u"no", u"key")) is None)
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1794
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1795 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1796 u"off",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1797 jcfg.get([u"tree2", u"key6"]))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1798 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1799 u"the default",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1800 jcfg.get([u"no", u"key"], default=u"the default"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1801 self.assertTrue(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1802 jcfg.get([u"no", u"key"]) is None)
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1803
448
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1804 def test_attribute_access(self):
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1805 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1806 jcfg = cfg.jailed(rootpath=(u"tree1",))
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1807
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1808 self.assertEqual(0x20, jcfg.key3)
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1809 self.assertEqual(u"off", jcfg.tree2.key6)
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1810
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1811 def test_attribute_access_non_existing(self):
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1812 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1813 jcfg = cfg.jailed(rootpath=(u"tree1",))
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1814
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1815 try:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1816 jcfg.non_existing
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1817 except AttributeError:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1818 pass
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1819 else:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1820 self.fail("AttributeError expected")
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1821
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1822 try:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1823 jcfg.tree2.non_existing
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1824 except AttributeError:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1825 pass
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1826 else:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1827 self.fail("AttributeError expected")
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1828
459
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1829 def test_iteration_dict(self):
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1830 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1831 jcfg = cfg.jailed(rootpath=(u"tree1",))
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1832 s = []
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1833 for k in jcfg:
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1834 s.append(k)
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1835 s.sort()
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1836 self.assertEqual([u"key3", u"tree2"], s)
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1837
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1838 def test_iteration_list(self):
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1839 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1840 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key8"))
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1841 s = []
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1842 for k in jcfg:
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1843 s.append(k)
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1844 s.sort()
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1845 self.assertEqual([u"in the root namespace", u"val1", u"val2"], s)
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1846
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1847 def test_boolean_context_list_false(self):
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1848 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1849 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key7"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1850 self.assertFalse(jcfg)
467
9fcdc42a0457 len-support for jailed configurations: implement a proper __len__() method
Franz Glasner <fzglas.hg@dom66.de>
parents: 461
diff changeset
1851 self.assertEqual(0, len(jcfg))
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1852
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1853 def test_boolean_context_list_true(self):
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1854 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1855 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key8"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1856 self.assertTrue(jcfg)
467
9fcdc42a0457 len-support for jailed configurations: implement a proper __len__() method
Franz Glasner <fzglas.hg@dom66.de>
parents: 461
diff changeset
1857 self.assertEqual(3, len(jcfg))
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1858
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1859 def test_boolean_context_dict_false(self):
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1860 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1861 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key9"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1862 self.assertFalse(jcfg)
467
9fcdc42a0457 len-support for jailed configurations: implement a proper __len__() method
Franz Glasner <fzglas.hg@dom66.de>
parents: 461
diff changeset
1863 self.assertEqual(0, len(jcfg))
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1864
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1865 def test_boolean_context_dict_true(self):
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1866 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1867 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2"))
461
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1868 self.assertTrue(jcfg)
467
9fcdc42a0457 len-support for jailed configurations: implement a proper __len__() method
Franz Glasner <fzglas.hg@dom66.de>
parents: 461
diff changeset
1869 self.assertEqual(6, len(jcfg))
461
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1870
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1871 def test_list_by_index(self):
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1872 cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py"))
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1873 jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key8"))
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1874 self.assertEqual(u"val1", jcfg[0])
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1875 self.assertEqual(u"val2", jcfg[1])
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1876 self.assertEqual(u"in the root namespace", jcfg[2])
5de1a6f213a5 Tests for index-based list-style access for jails that are lists and not dicts
Franz Glasner <fzglas.hg@dom66.de>
parents: 460
diff changeset
1877
395
0b3ffc34fa5c Begin a jailed configuration with access to a sub-tree of the original configuration
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 390
diff changeset
1878
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1879 class _TParserMixin:
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1880 def test_quote_and_unquote_empty(self):
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1881 e = self.quote(u"")
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1882 self.assertEqual(u"", e)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1883 self.assertEqual(u"", self.unquote(e))
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1884
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1885 def test_quoting_and_unquoting_are_inverse(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1886 for c in u"""%.:#|"'{}[]""":
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1887 qc = self.quote(c)
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1888 self.assertTrue(qc.startswith(u"%x") and len(qc) == 4)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1889 self.assertEqual(c, self.unquote(qc))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1890
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1891 def test_quoting_and_unquoting_are_inverse_all(self):
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1892 c = u"""%.:#|"'{}[]"""
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1893 qc = self.quote(c)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1894 self.assertEqual(len(c)*4, len(qc))
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1895 self.assertEqual(c, self.unquote(qc))
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1896
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1897 def test_quoting_and_unquoting_are_identical(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1898 # other characters
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1899 for c in configmix.config._QUOTE_SAFE:
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1900 qc = self.quote(c)
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1901 self.assertEqual(c, qc)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1902 self.assertEqual(c, self.unquote(qc))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1903
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1904 def test_quoting_and_unquoting_are_identical_all(self):
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1905 # other characters
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1906 qc = self.quote(configmix.config._QUOTE_SAFE)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1907 self.assertEqual(configmix.config._QUOTE_SAFE, qc)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1908 self.assertEqual(configmix.config._QUOTE_SAFE, self.unquote(qc))
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1909
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1910 def test_unquote_unimax(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1911 self.assertEqual(u"\U00019001", self.unquote(u"%U00019001"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1912 self.assertEqual(u"X\U00019AF1Z", self.unquote(u"X%U00019aF1Z"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1913
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1914 def test_unquote_base_plane(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1915 self.assertEqual(u"\uFFFF", self.unquote(u"%uffff"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1916 self.assertEqual(u"X\uFFFFZ", self.unquote(u"X%uffffZ"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1917
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1918 def test_unquote_latin(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1919 self.assertEqual(u"\xFF", self.unquote(u"%xff"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1920 self.assertEqual(u"X\xFFZ", self.unquote(u"X%xffZ"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1921
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1922 def test_unquote_zero(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1923 self.assertEqual(u"\x00", self.unquote(u"%x00"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1924 self.assertEqual(u"X\x00Z", self.unquote(u"X%x00Z"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1925
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1926 def test_unquote_adjacent_x(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1927 self.assertEqual(u"\x00\x01\xA0\xB0\xFF",
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1928 self.unquote(u"%x00%x01%xA0%xB0%xFF"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1929
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1930 def test_unquote_adjacent_u(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1931 self.assertEqual(u"\u0000\u0001\u00A0\uABCD\uFEFE",
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1932 self.unquote(u"%u0000%u0001%u00A0%uabCD%ufeFE"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1933
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1934 def test_unquote_adjacent_U(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1935 self.assertEqual(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1936 u"\U00000000\U00000001\U000000A0\U0001ABCD\U0001FEFE",
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1937 self.unquote(u"%U00000000%U00000001%U000000A0%U0001abCD%U0001feFE"))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1938
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1939 def test_invalid_hex_digits(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1940 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1941 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1942 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1943 u"%xgG")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1944 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1945 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1946 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1947 u"%ugGGG")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1948 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1949 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1950 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1951 u"%UgGGGgGGG")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1952
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1953 def test_invalid_too_short(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1954 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1955 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1956 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1957 u"%x0")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1958 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1959 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1960 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1961 u"%u000")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1962 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1963 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1964 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1965 u"%U0000000")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1966
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1967 def test_invalid_too_short_no_sigil(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1968 self.assertRaises(
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1969 ValueError,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1970 self.unquote,
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1971 u"%")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1972
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1973 def test_empty_pathstr(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1974 # an empty path string returns an empty path tuple
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1975 self.assertEqual(tuple(), self.pathstr2path(u""))
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1976
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1977 def test_split(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1978 p = self.pathstr2path(u"abc.def.hik.jkl")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1979 self.assertEqual((u"abc", u"def", u"hik", u"jkl"), p)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1980
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1981 def test_split_all_empty_parts(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1982 p = self.pathstr2path(u"....")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1983 self.assertEqual((u"", u"", u"", u"", u""), p)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1984
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1985 def test_split_all_empty_tail(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1986 p = self.pathstr2path(u"1.2.")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1987 self.assertEqual((u"1", u"2", u""), p)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1988
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1989 def test_split_unquote(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1990 p = self.pathstr2path(u"a%x2Eb.c%u002Ed.e%U0000002Ef")
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1991 self.assertEqual((u"a.b", u"c.d", u"e.f"), p)
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1992
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1993 def test_split_ns_empty(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1994 self.assertEqual((None, u""), self.split_ns(u""))
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1995
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1996 def test_split_ns_empty_parts(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1997 self.assertEqual((u"", u""), self.split_ns(u":"))
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1998
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1999 def test_split_ns_no_ns(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2000 self.assertEqual((None, u"the-varname"), self.split_ns(u"the-varname"))
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2001
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2002 def test_split_ns_non_quoted(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2003 self.assertEqual(
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2004 (u"the-ns", "the-rest:with:colons|filter1|filter2"),
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2005 self.split_ns(u"the-ns:the-rest:with:colons|filter1|filter2"))
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2006
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2007 def test_split_ns_quoting(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2008 self.assertEqual((u":", u"%x3a"), self.split_ns(u"%x3a:%x3a"))
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2009
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2010 def test_split_filters_empty(self):
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2011 self.assertEqual((u"", []), self.split_filters(u""))
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2012
553
9d2bd411f5c5 Do not rstrip() the remaining variable name when parsing out filters from variable names
Franz Glasner <fzglas.hg@dom66.de>
parents: 552
diff changeset
2013 def test_split_filters_varname_only_no_stripping(self):
9d2bd411f5c5 Do not rstrip() the remaining variable name when parsing out filters from variable names
Franz Glasner <fzglas.hg@dom66.de>
parents: 552
diff changeset
2014 self.assertEqual((u" varname ", []), self.split_filters(u" varname "))
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2015
553
9d2bd411f5c5 Do not rstrip() the remaining variable name when parsing out filters from variable names
Franz Glasner <fzglas.hg@dom66.de>
parents: 552
diff changeset
2016 def test_split_filters_single_no_stripping(self):
9d2bd411f5c5 Do not rstrip() the remaining variable name when parsing out filters from variable names
Franz Glasner <fzglas.hg@dom66.de>
parents: 552
diff changeset
2017 self.assertEqual((u" the-varname ", []),
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2018 self.split_filters(u" the-varname | "))
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2019
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2020 def test_split_filters_one(self):
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2021 self.assertEqual((u"the-varname", [u"None"]),
553
9d2bd411f5c5 Do not rstrip() the remaining variable name when parsing out filters from variable names
Franz Glasner <fzglas.hg@dom66.de>
parents: 552
diff changeset
2022 self.split_filters(u"the-varname|None"))
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2023
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2024 def test_split_filters_many(self):
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2025 self.assertEqual((u"the-varname", [u"Empty", u"None"]),
553
9d2bd411f5c5 Do not rstrip() the remaining variable name when parsing out filters from variable names
Franz Glasner <fzglas.hg@dom66.de>
parents: 552
diff changeset
2026 self.split_filters(u"the-varname|Empty|None"))
554
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2027
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2028 def test_None_filter_single(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2029 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2030 x = getattr(cfg, self.interpolate_meth)(u"{{non-existing|None}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2031 self.assertIsNone(x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2032 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2033 y = getattr(cfg, self.interpolate_meth)(u"{{non-existing|None}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2034 self.assertIsNone(y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2035
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2036 def test_None_filter_embedded(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2037 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2038 x = getattr(cfg, self.interpolate_meth)(u"A{{non-existing|None}}Z")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2039 self.assertEqual(u"AZ", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2040 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2041 y = getattr(cfg, self.interpolate_meth)(u"A{{non-existing|None}}Z")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2042 self.assertEqual(u"AZ", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2043
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2044 def test_Empty_filtersingle(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2045 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2046 x = getattr(cfg, self.interpolate_meth)(u"{{non-existing|Empty}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2047 self.assertEqual("", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2048 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2049 y = getattr(cfg, self.interpolate_meth)(u"{{non-existing|Empty}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2050 self.assertEqual("", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2051
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2052 def test_None_filter_pass_through(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2053 cfg = configmix.load(os.path.join(TESTDATADIR, "conf20.yml"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2054 os.path.join(TESTDATADIR, "conf21.yml"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2055 os.path.join(TESTDATADIR, "conf22.ini"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2056 os.path.join(TESTDATADIR, "conf23.json"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2057 os.path.join(TESTDATADIR, "conf24.toml"))
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2058 x = getattr(cfg, self.interpolate_meth)(u"{{intl.cache.items|None}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2059 self.assertEqual(10, x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2060 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2061 y = getattr(cfg, self.interpolate_meth)(u"{{intl.cache.items|None}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2062 self.assertEqual(10, y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2063
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2064 def test_Empty_filter_pass_through(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2065 cfg = configmix.load(os.path.join(TESTDATADIR, "conf20.yml"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2066 os.path.join(TESTDATADIR, "conf21.yml"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2067 os.path.join(TESTDATADIR, "conf22.ini"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2068 os.path.join(TESTDATADIR, "conf23.json"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2069 os.path.join(TESTDATADIR, "conf24.toml"))
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2070 x = getattr(cfg, self.interpolate_meth)(u"{{intl.cache.items|Empty}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2071 self.assertEqual(10, x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2072 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2073 y = getattr(cfg, self.interpolate_meth)(u"{{intl.cache.items|Empty}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2074 self.assertEqual(10, y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2075
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2076 def test_Empty_filter_no_pass_through_2(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2077 cfg = configmix.load(os.path.join(TESTDATADIR, "conf20.yml"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2078 os.path.join(TESTDATADIR, "conf21.yml"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2079 os.path.join(TESTDATADIR, "conf22.ini"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2080 os.path.join(TESTDATADIR, "conf23.json"),
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2081 os.path.join(TESTDATADIR, "conf24.toml"))
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2082 x = getattr(cfg, self.interpolate_meth)(u"{{intl.cache.items|Empty}}{{intl.cache.items}}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2083 self.assertEqual(u"1010", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2084 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2085 y = getattr(cfg, self.interpolate_meth)(u"{{intl.cache.items|Empty}}{{intl.cache.items}}")
642
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2086 self.assertEqual(u"1010", y)
554
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2087
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2088 def test_interpolate_wrong_syntax(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2089 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2090 x1 = getattr(cfg, self.interpolate_meth)(u"{{the-variable}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2091 self.assertEqual(u"{{the-variable}", x1)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2092 x2 = getattr(cfg, self.interpolate_meth)(u"A{{the-variable}Z")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2093 self.assertEqual(u"A{{the-variable}Z", x2)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2094 x3 = getattr(cfg, self.interpolate_meth)(u"A{{1{{2{{3}Z")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2095 self.assertEqual(u"A{{1{{2{{3}Z", x3)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2096 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2097 y1 = getattr(cfg, self.interpolate_meth)(u"{{the-variable}")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2098 self.assertEqual(u"{{the-variable}", y1)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2099 y2 = getattr(cfg, self.interpolate_meth)(u"A{{the-variable}Z")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2100 self.assertEqual(u"A{{the-variable}Z", y2)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2101 y3 = getattr(cfg, self.interpolate_meth)(u"A{{1{{2{{3}Z")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2102 self.assertEqual(u"A{{1{{2{{3}Z", y3)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2103
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2104 def test_interpolate_empty_str(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2105 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2106 x = getattr(cfg, self.interpolate_meth)(u"")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2107 self.assertEqual(u"", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2108 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2109 y = getattr(cfg, self.interpolate_meth)(u"")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2110 self.assertEqual(u"", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2111
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2112 def test_interpolate_no_interpolation(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2113 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2114 x = getattr(cfg, self.interpolate_meth)(u"no-interpolation-here")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2115 self.assertEqual(u"no-interpolation-here", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2116 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2117 y = getattr(cfg, self.interpolate_meth)(u"no-interpolation-here")
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2118 self.assertEqual(u"no-interpolation-here", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2119
642
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2120 def test_single_load_removes_DEL_VALUE(self):
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2121 cfg = configmix.load(os.path.join(TESTDATADIR, "conf20.yml"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2122 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2123 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2124 cfg.getvar,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2125 u("not-deleted"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2126
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2127 def test_single_safeload_removes_DEL_VALUE(self):
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2128 cfg = configmix.safe_load(os.path.join(TESTDATADIR, "conf20.yml"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2129 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2130 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2131 cfg.getvar,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2132 u("not-deleted"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2133
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2134 def test_never_expanding_lone_DEL_VALUE(self):
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2135 cfg = {
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2136 u("key1"): u("{{::DEL::}}"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2137 u("subkey2"): {
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2138 u("key3"): u("{{::DEL::}}")
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2139 }
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2140 }
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2141 cfg = configmix.config.Configuration(cfg)
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2142 print(repr(cfg))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2143 self.assertEqual(u("{{::DEL::}}"), cfg.getvar_s(u("key1")))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2144 self.assertEqual(u("{{::DEL::}}"), cfg.getvar_s(u("subkey2.key3")))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2145
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2146 def test_merge_does_never_expand(self):
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2147 cfg1 = configmix.load(os.path.join(TESTDATADIR, "conf20.yml"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2148 self.assertEqual(u("{{appdir}}/locale"), cfg1.getvar(u("intl.localedir")))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2149 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2150 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2151 cfg1.getvar_s,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2152 u("intl.localedir"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2153
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2154 cfg2 = {
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2155 u("process"): u("{{::DEL::}}"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2156 u("intl"): {
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2157 u("localedir"): u("{{appdir}}/other-locale"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2158 u("cache"): u("{{::DEL::}}")
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2159 }
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2160 }
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2161 cfg = configmix.merge(configmix.config.Configuration(cfg2), cfg1)
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2162 self.assertEqual(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2163 u("{{appdir}}/other-locale"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2164 cfg.getvar(u("intl.localedir")))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2165 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2166 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2167 cfg.getvar,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2168 u("process"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2169 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2170 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2171 cfg.getvar,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2172 u("intl.cache"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2173
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2174 def test_safemerge_does_never_expand(self):
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2175 cfg1 = configmix.safe_load(os.path.join(TESTDATADIR, "conf20.yml"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2176 self.assertEqual(u("{{appdir}}/locale"), cfg1.getvar(u("intl.localedir")))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2177 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2178 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2179 cfg1.getvar_s,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2180 u("intl.localedir"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2181
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2182 cfg2 = {
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2183 u("process"): u("{{::DEL::}}"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2184 u("intl"): {
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2185 u("localedir"): u("{{appdir}}/other-locale"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2186 u("cache"): u("{{::DEL::}}")
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2187 }
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2188 }
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2189 cfg = configmix.safe_merge(configmix.config.Configuration(cfg2), cfg1)
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2190 self.assertEqual(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2191 u("{{appdir}}/other-locale"),
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2192 cfg.getvar(u("intl.localedir")))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2193 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2194 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2195 cfg.getvar,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2196 u("process"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2197 self.assertRaises(
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2198 KeyError,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2199 cfg.getvar,
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2200 u("intl.cache"))
db3ff4fbb4ce More unittests concerning merging and variable interpolation
Franz Glasner <fzglas.hg@dom66.de>
parents: 629
diff changeset
2201
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2202
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2203 class T09Parser(_TParserMixin, unittest.TestCase):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2204
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2205 def setUp(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2206 self.unquote = configmix.config.py_unquote
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2207 self.quote = configmix.config.py_quote
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2208 self.pathstr2path = configmix.config.py_pathstr2path
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2209 self.split_ns = configmix.config._py_split_ns
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2210 self.split_filters = configmix.config._py_split_filters
554
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2211 self.interpolate_meth = "py_interpolate_variables"
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2212
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2213 def test_split_ns_wrong_type(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2214 self.assertRaises(
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2215 AttributeError, # no .partition
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2216 self.split_ns,
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2217 1)
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2218
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2219 def test_quote_wrong_type(self):
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2220 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2221 AttributeError, # no .lstrip
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2222 self.quote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2223 1)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2224
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2225 def test_unquote_wrong_type(self):
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2226 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2227 TypeError, # argument of type "int" is not iterable
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2228 self.unquote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2229 1)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2230
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2231
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2232 if configmix.config.fast_unquote is not None:
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2233 class T10FastParser(_TParserMixin, unittest.TestCase):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2234
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2235 def setUp(self):
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2236 self.unquote = configmix.config.fast_unquote
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2237 self.quote = configmix.config.fast_quote
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2238 self.pathstr2path = configmix.config.fast_pathstr2path
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2239 self.split_ns = configmix.config._fast_split_ns
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
2240 self.split_filters = configmix.config._fast_split_filters
554
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2241 self.interpolate_meth = "fast_interpolate_variables"
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2242
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2243 def test_split_ns_wrong_type(self):
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2244 self.assertRaises(
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2245 TypeError,
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2246 self.split_ns,
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2247 b":")
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2248
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2249 def test_quote_wrong_type(self):
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2250 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2251 TypeError,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2252 self.quote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2253 b":")
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2254
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2255 def test_unquote_wrong_type(self):
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2256 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2257 TypeError,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2258 self.unquote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2259 b":")
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2260
542
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2261
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2262 if __name__ == "__main__":
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2263 unittest.main()