annotate tests/test.py @ 629:2426fa273a29

Test defaults for interpolation errors
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 14 Jan 2022 11:59:48 +0100
parents c56971e85496
children db3ff4fbb4ce
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)
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
442
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
443 def test13_keyerror(self):
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
444 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
445 self.assertRaises(KeyError, 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
446
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
447 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
448 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
449 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
450
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
451 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
452 # 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
453 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
454 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
455 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
456
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
457 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
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.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
460 default="999"))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
461
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
462 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
463 # 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
464 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
465 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
466 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
467
629
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
468 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
469 # 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
470 dflt = {"foo22": "bar22"}
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
471 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
472 # exists ...
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
473 cfg.getvar(u"intl.localedir")
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
474 # ... but cannot interpolated
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
475 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
476
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
477 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
478 # 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
479 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
480 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
481 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
482 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
483
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
484 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
485 # 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
486 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
487 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
488 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
489 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
490
629
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
491 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
492 dflt = {"foo4": "bar4"}
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
493 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
494 # key exists ...
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
495 cfg.getvarl(u"intl", u"localedir")
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
496 # ... but cannot interpolated
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
497 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
498 default=dflt) is dflt)
2426fa273a29 Test defaults for interpolation errors
Franz Glasner <fzglas.hg@dom66.de>
parents: 628
diff changeset
499
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
500 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
501 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
502 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
503 default=9999))
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
504 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
505 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
506 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
507 default=u('false')))
364
1941f0188e81 FIX: Handle a "default" keyword parameter in ".getvar()" properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 356
diff changeset
508
370
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
509 def test18_getfirstvar_nonexisting(self):
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
510 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
511 self.assertRaises(
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
512 KeyError,
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
513 cfg.getfirstvar,
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
514 "db.non.existing.key",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
515 "db.non.existing.key2")
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
516
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
517 def test19_getfirstvar_nonexisting_default(self):
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
518 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
519 self.assertIsNone(cfg.getfirstvar("db.non.existing.key",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
520 "db.non.existing.key2",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
521 "intl.non.existing",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
522 default=None))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
523
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
524 def test20_getfirstvar_existing(self):
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
525 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
526 self.assertEqual("test-configmix", cfg.getfirstvar("intl.domain"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
527 self.assertEqual("test-configmix", cfg.getfirstvar("intl.domain",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
528 "intl.fallback"))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
529 self.assertEqual("de", cfg.getfirstvar("intl.fallback",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
530 "intl.domain",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
531 default=None))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
532
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
533 self.assertEqual("de", cfg.getfirstvar("intl.non.existing",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
534 "intl.fallback",
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
535 default=None))
18622d265602 Unittests for ".getfirstvar()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 369
diff changeset
536
371
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
537 def test21_getfirstvar_s_existing(self):
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
538 cfg = self._load(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
539 os.path.join(TESTDATADIR, "conf20.yml"),
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
540 os.path.join(TESTDATADIR, "conf21.yml"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
541 self.assertEqual(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
542 os.getcwd()+"/locale",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
543 cfg.getfirstvar_s("intl.non.existing", "intl.localedir"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
544 self.assertEqual(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
545 os.getcwd()+"/locale",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
546 cfg.getfirstvar_s("intl.localedir", "intl.non.existing"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
547
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
548 def test22_getfirstvar_s_non_existing(self):
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
549 cfg = self._load(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
550 os.path.join(TESTDATADIR, "conf20.yml"),
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
551 os.path.join(TESTDATADIR, "conf21.yml"))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
552 self.assertIsNone(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
553 cfg.getfirstvar_s("intl.non.existing", "intl.non.existing2",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
554 default=None))
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
555 self.assertRaises(
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
556 KeyError,
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
557 cfg.getfirstvar_s,
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
558 "intl.non.existing",
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
559 "intl.non.existing2")
873b9d2ecb0b Unittests for ".getfirstvar_s()"
Franz Glasner <fzglas.hg@dom66.de>
parents: 370
diff changeset
560
373
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
561 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
562 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
563 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
564 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
565 "intl.non.existing",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
566 default=None))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
567 self.assertRaises(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
568 KeyError,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
569 cfg.getfirstintvar_s,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
570 "db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
571 "db.non.exksting.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
572 "intl.non.existing")
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
573
457
e3ae8092eaf3 FIX: unittest: duplicate name of test-method removed
Franz Glasner <fzglas.hg@dom66.de>
parents: 456
diff changeset
574 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
575 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
576 self.assertEqual(20,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
577 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
578 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
579 "intl.non.existing",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
580 default=u("20")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
581 self.assertEqual(30,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
582 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
583 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
584 "intl.non.existing",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
585 default=30))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
586 self.assertRaises(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
587 KeyError,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
588 cfg.getfirstintvar_s,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
589 "db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
590 "db.non.exksting.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
591 "intl.non.existing")
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
592
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
593 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
594 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
595 self.assertEqual(10,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
596 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
597 "intl.cache.items",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
598 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
599 default=u("20")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
600
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
601 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
602 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
603 self.assertFalse(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
604 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
605 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
606 "db.engines.rw.no-echo",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
607 default=u("false")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
608 self.assertTrue(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
609 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
610 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
611 "db.engines.rw.no-echo",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
612 default=True))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
613 self.assertRaises(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
614 KeyError,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
615 cfg.getfirstboolvar_s,
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
616 "db.non.existing.key",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
617 "db.non.exksting.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
618 "b.engines.rw.no-echo")
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
619
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
620 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
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.assertFalse(
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
623 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
624 "db.engines.rw.echo",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
625 "db.non.existing.key2",
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
626 default=u("true")))
0c65aac81807 Implement ".getfirstintvar_s()" and ".getfirstboolvar_s()" with unittests
Franz Glasner <fzglas.hg@dom66.de>
parents: 372
diff changeset
627
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
628 def test27_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
629 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
630 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
631 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
632 cfg.getfirstvarl,
492
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
633 *[["db", "non", "existing", "key"],
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
634 ("db", "non", "existing", "key2")])
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
635
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
636 def test27b_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
637 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
638 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
639 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
640 cfg.getfirstvarl,
492
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
641 *[{"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
642 {"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
643
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
644 def test28_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
645 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
646 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
647 *[["db", "non", "existing", "key"],
a9a291927a4b FIX: Tests when calling getfirstNNNl() and friends properly
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 486
diff changeset
648 ("db", "non", "existing", "key2")],
381
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
649 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
650
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
651 def test28b_getfirstvarl_nonexisting(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
652 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
653 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
654 *[{"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
655 {"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
656 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
657
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
658 def test29_getfirstvarl_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
659 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
660 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
661 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
662 cfg.getfirstvarl(*(("intl", "domain"),)))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
663 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
664 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
665 cfg.getfirstvarl(*(("intl", "domain"), ("intl", "fallback"))))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
666 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
667 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
668 cfg.getfirstvarl(*[["intl", "fallback"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
669 ["intl", "domain"]],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
670 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
671 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
672 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
673 cfg.getfirstvarl(*[["intl", "non", "existing"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
674 ["intl", "fallback"]],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
675 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
676
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
677 def test29b_getfirstvarl_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
678 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
679 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
680 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
681 cfg.getfirstvarl(*({"namespace": None,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
682 "path": ("intl", "domain")},)))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
683 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
684 "test-configmix",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
685 cfg.getfirstvarl(*({"namespace": None,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
686 "path": ("intl", "domain")},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
687 {"namespace": None, "path": ("intl", "fallback")})))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
688 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
689 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
690 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
691 {"namespace": None, "path": ["intl", "domain"]}],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
692 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
693 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
694 "de",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
695 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
696 {"namespace": None, "path": ["intl", "fallback"]}],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
697 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
698
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
699 def test30_getfirstvarl_s_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
700 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
701 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
702 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
703 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
704 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
705 cfg.getfirstvarl_s(*[["intl", "non", "existing"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
706 ["intl", "localedir"]]))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
707 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
708 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
709 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
710
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
711 def test30b_getfirstvarl_s_existing(self):
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
712 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
713 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
714 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
715 self.assertEqual(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
716 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
717 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
718 {"namespace": None, "path": ["intl", "localedir"]}]))
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 os.getcwd()+"/locale",
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
721 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
722
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
723 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
724 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
725 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
726 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
727 self.assertIsNone(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
728 cfg.getfirstvarl_s(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
729 *[["intl", "non", "existing"], ["intl", "non", "existing2"]],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
730 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
731 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
732 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
733 cfg.getfirstvarl_s,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
734 ["intl" ,"non", "existing"],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
735 ["intl", "non", "existing2"])
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
736
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
737 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
738 cfg = self._load(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
739 os.path.join(TESTDATADIR, "conf20.yml"),
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
740 os.path.join(TESTDATADIR, "conf21.yml"))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
741 self.assertIsNone(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
742 cfg.getfirstvarl_s(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
743 *[{"namespace": None, "path": ["intl", "non", "existing"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
744 {"namespace": None, "path": ["intl", "non", "existing2"]}],
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
745 default=None))
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
746 self.assertRaises(
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
747 KeyError,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
748 cfg.getfirstvarl_s,
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
749 {"namespace": None, "path": ["intl" ,"non", "existing"]},
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
750 {"namespace": None, "path": ["intl", "non", "existing2"]})
fe3dfd687621 Implemented Configuration.getfirstvarl() and Configuration.getfirstvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 373
diff changeset
751
390
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
752 def test32_getfirstintvarl_s_nonexisting(self):
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
753 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
754 self.assertIsNone(cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
755 *(("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
756 ("db", "non", "existing", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
757 ("intl", "non", "existing")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
758 default=None))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
759 self.assertRaises(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
760 KeyError,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
761 cfg.getfirstintvarl_s,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
762 ("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
763 ("db", "non", "exksting", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
764 ("intl", "non", "existing"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
765
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
766 def test33_getfirstintvarl_s_nonexisting(self):
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
767 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
768 self.assertEqual(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
769 20,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
770 cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
771 *(("db", "non", "existing", ".key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
772 ("db", "non", "existing", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
773 ("intl", "non", "existing")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
774 default=u("20")))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
775 self.assertEqual(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
776 30,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
777 cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
778 *(("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
779 ("db", "non", "existing", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
780 ("intl", "non", "existing")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
781 default=30))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
782 self.assertRaises(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
783 KeyError,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
784 cfg.getfirstintvarl_s,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
785 ("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
786 ("db", "non", "exksting", "key2"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
787 ("intl", "non", "existing"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
788
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
789 def test34_getfirstintvarl_s_existing(self):
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
790 cfg = self._load(os.path.join(TESTDATADIR, "conf20.yml"))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
791 self.assertEqual(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
792 10,
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
793 cfg.getfirstintvarl_s(
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
794 *(("db", "non", "existing", "key"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
795 ("intl", "cache", "items"),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
796 ("db", "non", "existing", "key2")),
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
797 default=u("20")))
0521e857c320 Tests for getfirstintvarl_s()
Franz Glasner <fzglas.hg@dom66.de>
parents: 381
diff changeset
798
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
799 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
800 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
801 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
802 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
803 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
804
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
805 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
806 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
807 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
808 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
809 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
810
419
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
811 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
812 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
813 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
814
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
815 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
816 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
817 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
818
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
819 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
820 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
821 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
822 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
823 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
824
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
825 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
826 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
827 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
828 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
829 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
830
439
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
831 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
832 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
833 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
834 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
835
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
836 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
837 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
838 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
839 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
840
442
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
841 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
842 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
843 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
844 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
845 cfg.get(u"key1"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
846 self.assertTrue(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
847 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
848
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
849 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
850 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
851 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
852 0x20,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
853 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
854 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
855 0x1,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
856 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
857
458
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
858 def test44_iterator(self):
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
859 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
860 s = []
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
861 for k in cfg:
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
862 s.append(k)
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
863 s.sort()
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
864
a68240971d3d Tests: test for iterating the keys of a configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 457
diff changeset
865 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
866
506
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
867 def test45_clear_cache(self):
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
868 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
869 cfg.clear_cache()
dffa692751b1 Implement clear_cache() for the configuration
Franz Glasner <fzglas.hg@dom66.de>
parents: 502
diff changeset
870
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
871
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
872 class T02LoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
873
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
874 def setUp(self):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
875 self._load = configmix.load
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
876
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
877 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
878 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
879 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
880 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
881
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
882 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
883 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
884 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
885 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
886
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
887
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
888 class T03SafeLoadAndMerge(_T02MixinLoadAndMerge, unittest.TestCase):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
889
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
890 def setUp(self):
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
891 self._load = configmix.safe_load
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
892
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
893 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
894 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
895 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
896 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
897
301
a03a6797533b Renumber: make room for new tests implemented in the mixin class
Franz Glasner <fzglas.hg@dom66.de>
parents: 292
diff changeset
898 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
899 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
900 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
901 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
902
112
c50ad93eb5dc Implemented a "safe_load()" to load with safe merging
Franz Glasner <hg@dom66.de>
parents: 109
diff changeset
903
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
904 class T04CustomExtension(unittest.TestCase):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
905
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
906 def setUp(self):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
907 self._reset()
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
908
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
909 def tearDown(self):
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
910 self._reset()
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
911
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
912 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
913 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
914 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
915 configmix.set_assoc(pat, fmode)
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
916
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
917 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
918 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
919 cfg = configmix.load(
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
920 os.path.join(TESTDATADIR, "conf1.ini"),
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
921 os.path.join(TESTDATADIR, "conf30.conf"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
922 self.assertEqual(u("Umlaute: ÄÖÜäöüß"), cfg.getvar_s("key7"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
923 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
924
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
925 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
926 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
927 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
928
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
929 def _ld():
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
930 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
931 os.path.join(TESTDATADIR, "conf30.conf"))
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
932
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
933 self.assertRaises(ValueError, _ld)
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
934
227
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
935 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
936 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
937 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
938 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
939
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
940 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
941 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
942 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
943 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
944
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
945 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
946 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
947 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
948 # 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
949 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
950
f5011eec3b6e Added a loader with key "ignore" that ignores the given configuration file
Franz Glasner <fzglas.hg@dom66.de>
parents: 198
diff changeset
951 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
952 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
953 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
954 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
955
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
956 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
957 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
958 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
959 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
960 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
961
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
962 def _g():
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
963 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
964
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
965 self.assertRaises(KeyError, _g)
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
966
183
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
967 def test04_determine_mode(self):
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
968 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
969 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
970 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
971 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
972
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
973 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
974
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
975 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
976 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
977 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
978
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
979 def _ld():
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
980 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
981
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
982 self.assertRaises(ValueError, _ld)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
983
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
984 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
985 configmix.clear_assoc()
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
986 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
987
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
988 def _ld():
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
989 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
990
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
991 self.assertRaises(KeyError, _ld)
d1103f0f9166 Unit-tests with the file-mode scanner
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 181
diff changeset
992
140
d8d47893df5b Unittests for custom configuration filename extensions
Franz Glasner <hg@dom66.de>
parents: 134
diff changeset
993
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
994 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
995
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
996 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
997 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
998
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
999 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
1000 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
1001
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
1002 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
1003 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
1004 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
1005 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
1006
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
1007 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
1008 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
1009 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
1010
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1011 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
1012 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
1013 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
1014
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
1015 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
1016 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
1017 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
1018
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1019 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
1020 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
1021 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
1022
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 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
1024 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
1025 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
1026
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1027 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
1028 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
1029 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
1030
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
1031 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
1032 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
1033 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
1034
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1035 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
1036 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
1037 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
1038
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
1039 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
1040 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
1041 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
1042 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
1043 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
1044
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
1045
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1046 class T06References(unittest.TestCase):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1047
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1048 def setUp(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1049 self._reset()
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1050 self._cfg = configmix.load(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1051 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
1052 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
1053 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
1054 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
1055 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
1056 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
1057
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1058 def tearDown(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1059 self._reset()
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1060
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1061 def _reset(self):
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1062 configmix.clear_assoc()
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1063 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
1064 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
1065
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1066 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
1067 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
1068 self.assertTrue(isinstance(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1069 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
1070 self.assertEqual("werkzeug",
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1071 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
1072 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
1073 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
1074 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
1075
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1076 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
1077 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
1078 self.assertTrue(isinstance(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1079 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
1080 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1081 "werkzeug",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1082 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
1083 self.assertTrue(self._cfg.getvarl(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1084 "wsgi", "profiler", "params", "params", "evalex"))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1085 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
1086 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
1087
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1088 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
1089 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
1090 self.assertTrue(isinstance(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1091 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
1092 self.assertTrue(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1093 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
1094 self.assertEqual("werkzeug",
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1095 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
1096
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1097 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
1098 self.assertTrue(isinstance(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1099 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
1100 self.assertTrue(isinstance(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1101 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
1102 self.assertTrue(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1103 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
1104 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1105 "werkzeug",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1106 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
1107
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1108 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
1109 self.assertEqual(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1110 u"werkzeug",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1111 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
1112
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1113 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
1114 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
1115 u"werkzeug",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1116 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
1117
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1118 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
1119 self.assertTrue(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1120 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
1121
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1122 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
1123 self.assertEqual(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1124 "werkzeug",
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1125 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
1126 self.assertTrue(
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1127 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
1128
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1129 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
1130 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1131 "werkzeug",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1132 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
1133 self.assertTrue(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1134 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
1135
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1136 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
1137 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
1138 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
1139
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1140 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
1141 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
1142 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
1143
309
f77dba9fc164 New unittest for the behaviour of ".getvar()" with regard to config references
Franz Glasner <fzglas.hg@dom66.de>
parents: 305
diff changeset
1144 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
1145 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
1146 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
1147 "{{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
1148 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
1149
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1150 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
1151 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
1152 self.assertEqual(
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1153 "{{ref:#wsgi.debugger}}",
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1154 v["params"])
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1155
312
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1156 def test07_explicit_reference_expansion(self):
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1157 v = self._cfg.getvar("wsgi.profiler")
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1158 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
1159 dict))
0788e8e162f6 Unittests for explicit expansion of configuration references
Franz Glasner <fzglas.hg@dom66.de>
parents: 309
diff changeset
1160
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1161 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
1162 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
1163 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
1164 dict))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1165
313
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1166 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
1167 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
1168 self.assertTrue(isinstance(v, bool))
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1169 self.assertTrue(v)
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1170 # but not that .getvar does not **not**
15a1d5fd0aa1 Further unittest for config reference expansion
Franz Glasner <fzglas.hg@dom66.de>
parents: 312
diff changeset
1171 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
1172 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
1173
314
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1174 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
1175 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
1176 self.assertTrue(isinstance(v, bool))
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1177 self.assertTrue(v)
043a6412be3c Implemented new access methods .getvarl() and .getvarl_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 313
diff changeset
1178 # 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
1179 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
1180 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
1181
305
f529ca46dd50 Implemented the "ref" namespace to get configuration tree references.
Franz Glasner <fzglas.hg@dom66.de>
parents: 301
diff changeset
1182
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
1183 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
1184
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
1185 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
1186 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
1187 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
1188
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
1189 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
1190 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
1191
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
1192 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
1193 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
1194 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
1195 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
1196
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
1197 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
1198 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
1199 "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
1200 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
1201 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
1202 "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
1203 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
1204 "%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
1205 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
1206 "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
1207 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
1208 "%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
1209
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
1210 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
1211 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
1212 "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
1213 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
1214 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
1215 "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
1216 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
1217 "%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
1218 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
1219 "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
1220 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
1221 "%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
1222
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
1223 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
1224 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
1225 "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
1226 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
1227
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
1228 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
1229 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
1230 "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
1231 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
1232
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
1233 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
1234 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
1235 "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
1236 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
1237
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
1238 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
1239 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
1240 "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
1241 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
1242
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
1243 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
1244 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
1245 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
1246 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
1247 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
1248
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
1249 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
1250 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
1251 "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
1252 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
1253
329
d81d2cdf4925 FIX: Handle the unquoting of namespaces within Configuration.getvar() properly.
Franz Glasner <fzglas.hg@dom66.de>
parents: 327
diff changeset
1254 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
1255 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
1256 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
1257 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
1258 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
1259 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
1260 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
1261 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
1262 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
1263 self.assertEqual(v1, v4)
337
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 336
diff changeset
1264 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
1265 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
1266
340
176e22110fc5 docs, tests: notes and additional tests when quoting the "ref" namespace name
Franz Glasner <fzglas.hg@dom66.de>
parents: 338
diff changeset
1267 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
1268 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
1269 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
1270
330
Franz Glasner <fzglas.hg@dom66.de>
parents: 329
diff changeset
1271
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
1272 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
1273
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
1274 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
1275 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
1276
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
1277 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
1278 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
1279
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
1280 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
1281 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
1282 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
1283 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
1284
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
1285 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
1286 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
1287 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
1288
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
1289 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
1290 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
1291 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
1292 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
1293 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
1294 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
1295 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
1296 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
1297
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
1298 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
1299 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
1300 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
1301 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
1302 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
1303 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
1304 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
1305 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
1306
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
1307 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
1308 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
1309 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
1310
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
1311 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
1312 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
1313 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
1314 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
1315 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
1316 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
1317 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
1318 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
1319
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
1320 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
1321 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
1322 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
1323 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
1324 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
1325 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
1326 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
1327 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
1328
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
1329 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
1330 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
1331 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
1332 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
1333 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
1334
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
1335 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
1336 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
1337 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
1338
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
1339 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
1340 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
1341 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
1342 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
1343 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
1344
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 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
1346 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
1347 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
1348 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
1349 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
1350
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 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
1352 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
1353 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
1354 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
1355
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 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
1357 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
1358 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
1359
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1360 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
1361 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
1362 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
1363 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
1364
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
1365 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
1366 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
1367 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
1368 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
1369 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
1370
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 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
1372 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
1373 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
1374 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
1375 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
1376
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 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
1378 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
1379 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
1380
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1381 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
1382 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
1383 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
1384 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
1385
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
1386 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
1387 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
1388 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
1389 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
1390 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
1391
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 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
1393 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
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"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
1397
398
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1398 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
1399 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
1400 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
1401
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1402 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
1403 *[(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
1404 (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
1405 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
1406 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
1407 *[(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
1408 (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
1409 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
1410 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
1411 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
1412 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
1413 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
1414 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
1415 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
1416
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1417 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
1418 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
1419 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
1420
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1421 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
1422 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1423 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
1424 (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
1425 (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
1426 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
1427 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1428 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
1429 (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
1430 (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
1431 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
1432 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1433 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
1434 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
1435 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
1436 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1437 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
1438 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
1439
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1440 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
1441 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
1442 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
1443
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1444 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
1445 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
1446 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
1447 *[(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
1448 (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
1449 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
1450 0x20,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1451 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
1452 *[(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
1453 (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
1454 (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
1455 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
1456 0x20,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1457 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
1458 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
1459 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
1460 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
1461 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
1462 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
1463
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1464 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
1465 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
1466 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
1467
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1468 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
1469 *[(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
1470 (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
1471 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
1472 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
1473 *[(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
1474 (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
1475 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
1476 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
1477 *[(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
1478 (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
1479 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
1480 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
1481 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
1482 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
1483
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1484 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
1485 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
1486 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
1487
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1488 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
1489 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1490 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
1491 (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
1492 (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
1493 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
1494 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1495 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
1496 (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
1497 (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
1498 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
1499 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1500 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
1501 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
1502 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
1503 KeyError,
b1f82b853290 Jailed configuration: implement more methods: getfirstvarl, getfirstvarl_s, getfirstvar and getfirstvar_s
Franz Glasner <fzglas.hg@dom66.de>
parents: 395
diff changeset
1504 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
1505 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
1506
407
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1507 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
1508 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
1509 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
1510
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1511 jcfg = cfg.jailed(rootpath=[])
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1512 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
1513
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1514 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
1515
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1516 self.assertRaises(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1517 KeyError,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1518 jcfg.getvarl,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1519 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
1520 self.assertEqual(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1521 0x20,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1522 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
1523 self.assertEqual(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1524 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
1525 jcfg.getvar("key1"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1526
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1527 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
1528 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
1529
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1530 jcfg.rebind(cfg2)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1531 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
1532
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1533 self.assertRaises(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1534 KeyError,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1535 jcfg.getvar,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1536 u"tree1.key3")
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1537 self.assertEqual(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1538 u"the next value",
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1539 jcfg.getvar("key1"))
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1540
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1541 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
1542 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
1543 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
1544
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1545 jcfg1 = cfg.jailed(rootpath=[])
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1546 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
1547 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
1548 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
1549
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1550 self.assertRaises(
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1551 TypeError,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1552 jcfg1.rebind,
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1553 jcfg2)
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1554
1bec7f5fafe8 Unittests for the new base and rebind features
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 404
diff changeset
1555 # 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
1556 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
1557
412
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1558 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
1559 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
1560 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
1561
816327e178b0 Provide coercing methods for the jailed configuration: getintXXX(), getboolXXX(), getfloatXXX() and friends.
Franz Glasner <fzglas.hg@dom66.de>
parents: 407
diff changeset
1562 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
1563 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
1564 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
1565
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1566 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
1567 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
1568 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
1569
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1570 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
1571
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1572 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
1573 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
1574
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1575 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
1576
427
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1577 self.assertTrue(sjcfg.base is cfg)
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1578
417
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1579 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
1580 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
1581 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
1582
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1583 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
1584
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1585 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
1586 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
1587
83d537f1dfbb Implement sub-jails: allow to get a jailed configuration from a jail
Franz Glasner <fzglas.hg@dom66.de>
parents: 416
diff changeset
1588 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
1589
427
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1590 self.assertTrue(sjcfg.base is cfg)
40be1d25ff1c Test the base of sub-jails
Franz Glasner <f.glasner@feldmann-mg.com>
parents: 419
diff changeset
1591
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
1592 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
1593 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
1594 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
1595
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
1596 self.assertEqual(
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1597 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
1598 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
1599
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
1600 self.assertEqual(
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1601 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
1602 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
1603
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
1604 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
1605 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
1606 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
1607
419
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1608 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
1609 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
1610 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
1611
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1612 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1613 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
1614 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
1615
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1616 self.assertEqual(
079a82129110 Allow the empty variable name to retrieve the root configuration object
Franz Glasner <fzglas.hg@dom66.de>
parents: 418
diff changeset
1617 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
1618 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
1619
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
1620 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
1621 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
1622 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
1623
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1624 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
1625 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
1626 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
1627
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1628 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
1629 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
1630 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
1631
b96f49c9c76b Proper "repr()" for a jailed configuration: put the root path into the output
Franz Glasner <fzglas.hg@dom66.de>
parents: 427
diff changeset
1632 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
1633 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
1634 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
1635 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
1636 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
1637 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
1638 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
1639 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
1640
437
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1641 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
1642 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
1643 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
1644 self.assertEqual(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1645 u"off",
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1646 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
1647 try:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1648 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
1649 except KeyError:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1650 pass
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1651 else:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1652 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
1653
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1654 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
1655 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
1656 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
1657 self.assertEqual(
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1658 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
1659 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
1660 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
1661 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
1662 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
1663 try:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1664 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
1665 except KeyError:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1666 pass
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1667 else:
bbc5b64e137a - Dict-level access to a configuration key now does variable interpolation.
Franz Glasner <fzglas.hg@dom66.de>
parents: 432
diff changeset
1668 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
1669 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
1670 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
1671 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
1672 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
1673 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
1674 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
1675
439
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1676 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
1677 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
1678 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
1679
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1680 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
1681 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
1682
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1683 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
1684 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
1685 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
1686
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1687 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
1688 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
1689
bd27da55483a Optimized __contains__() implementation for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 437
diff changeset
1690 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
1691 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
1692
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
1693 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
1694 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
1695
442
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1696 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
1697 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
1698 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
1699
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1700 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1701 0x20,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1702 jcfg.get(u"key3"))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1703 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1704 0x2,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1705 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
1706
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1707 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
1708 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
1709 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
1710
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1711 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1712 0x20,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1713 jcfg.get((u"key3",)))
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1714 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1715 0x3,
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1716 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
1717 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1718 u"off",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1719 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
1720 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1721 u"the default",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1722 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
1723 self.assertTrue(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1724 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
1725
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1726 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1727 u"off",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1728 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
1729 self.assertEqual(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1730 u"the default",
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1731 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
1732 self.assertTrue(
94cf5a8722d6 Add proper .get() support for jailed and unjailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 441
diff changeset
1733 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
1734
448
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1735 def test_attribute_access(self):
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1736 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
1737 jcfg = cfg.jailed(rootpath=(u"tree1",))
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1738
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1739 self.assertEqual(0x20, jcfg.key3)
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1740 self.assertEqual(u"off", jcfg.tree2.key6)
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1741
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1742 def test_attribute_access_non_existing(self):
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1743 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
1744 jcfg = cfg.jailed(rootpath=(u"tree1",))
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1745
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1746 try:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1747 jcfg.non_existing
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1748 except AttributeError:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1749 pass
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1750 else:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1751 self.fail("AttributeError expected")
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1752
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1753 try:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1754 jcfg.tree2.non_existing
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1755 except AttributeError:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1756 pass
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1757 else:
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1758 self.fail("AttributeError expected")
b95c12781497 Attribute-style access for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 442
diff changeset
1759
459
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1760 def test_iteration_dict(self):
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1761 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
1762 jcfg = cfg.jailed(rootpath=(u"tree1",))
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1763 s = []
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1764 for k in jcfg:
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1765 s.append(k)
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1766 s.sort()
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1767 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
1768
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1769 def test_iteration_list(self):
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1770 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
1771 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
1772 s = []
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1773 for k in jcfg:
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1774 s.append(k)
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1775 s.sort()
9dc9cef1b9cd Implement proper iteration support for jailed configurations
Franz Glasner <fzglas.hg@dom66.de>
parents: 458
diff changeset
1776 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
1777
460
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1778 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
1779 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
1780 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
1781 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
1782 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
1783
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1784 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
1785 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
1786 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
1787 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
1788 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
1789
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1790 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
1791 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
1792 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
1793 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
1794 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
1795
d22985d6806e Proper boolean context for jailed configurations: __bool__()/__nonzero__()
Franz Glasner <fzglas.hg@dom66.de>
parents: 459
diff changeset
1796 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
1797 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
1798 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
1799 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
1800 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
1801
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
1802 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
1803 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
1804 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
1805 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
1806 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
1807 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
1808
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
1809
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
1810 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
1811 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
1812 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
1813 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
1814 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
1815
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
1816 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
1817 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
1818 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
1819 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
1820 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
1821
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1822 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
1823 c = u"""%.:#|"'{}[]"""
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1824 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
1825 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
1826 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
1827
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
1828 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
1829 # 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
1830 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
1831 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
1832 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
1833 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
1834
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1835 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
1836 # other characters
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
1837 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
1838 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
1839 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
1840
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
1841 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
1842 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
1843 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
1844
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1845 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
1846 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
1847 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
1848
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1849 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
1850 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
1851 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
1852
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1853 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
1854 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
1855 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
1856
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1857 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
1858 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
1859 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
1860
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1861 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
1862 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
1863 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
1864
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1865 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
1866 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
1867 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
1868 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
1869
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1870 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
1871 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
1872 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
1873 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
1874 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
1875 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
1876 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
1877 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
1878 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
1879 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
1880 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
1881 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
1882 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
1883
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1884 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
1885 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
1886 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
1887 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
1888 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
1889 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
1890 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
1891 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
1892 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
1893 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
1894 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
1895 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
1896 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
1897
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 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
1899 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
1900 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
1901 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
1902 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
1903
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1904 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
1905 # 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
1906 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
1907
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
1908 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
1909 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
1910 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
1911
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 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
1913 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
1914 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
1915
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 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
1917 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
1918 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
1919
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 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
1921 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
1922 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
1923
543
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1924 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
1925 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
1926
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1927 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
1928 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
1929
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1930 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
1931 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
1932
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1933 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
1934 self.assertEqual(
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1935 (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
1936 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
1937
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
1938 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
1939 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
1940
552
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
1941 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
1942 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
1943
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
1944 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
1945 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
1946
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
1947 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
1948 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
1949 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
1950
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
1951 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
1952 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
1953 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
1954
39e5d07d8dbc Provide a C implementation of configmix.config._split_filters.
Franz Glasner <fzglas.hg@dom66.de>
parents: 550
diff changeset
1955 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
1956 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
1957 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
1958
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1959 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
1960 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1961 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
1962 self.assertIsNone(x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1963 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1964 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
1965 self.assertIsNone(y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1966
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1967 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
1968 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1969 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
1970 self.assertEqual(u"AZ", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1971 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1972 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
1973 self.assertEqual(u"AZ", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1974
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1975 def test_Empty_filtersingle(self):
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1976 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1977 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
1978 self.assertEqual("", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1979 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1980 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
1981 self.assertEqual("", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1982
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1983 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
1984 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
1985 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
1986 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
1987 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
1988 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
1989 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
1990 self.assertEqual(10, x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1991 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1992 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
1993 self.assertEqual(10, y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1994
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
1995 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
1996 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
1997 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
1998 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
1999 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
2000 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
2001 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
2002 self.assertEqual(10, x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2003 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2004 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
2005 self.assertEqual(10, y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2006
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2007 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
2008 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
2009 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
2010 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
2011 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
2012 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
2013 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
2014 self.assertEqual(u"1010", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2015 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2016 y = 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
2017 self.assertEqual(u"1010", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2018
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2019 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
2020 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2021 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
2022 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
2023 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
2024 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
2025 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
2026 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
2027 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2028 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
2029 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
2030 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
2031 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
2032 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
2033 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
2034
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2035 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
2036 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2037 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
2038 self.assertEqual(u"", x)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2039 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2040 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
2041 self.assertEqual(u"", y)
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2042
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2043 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
2044 cfg = configmix.load()
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2045 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
2046 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
2047 # caching should have no effect
36d7aa000435 Implement a C-version of Configuration.interpolate_variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 553
diff changeset
2048 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
2049 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
2050
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
2051
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2052 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
2053
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2054 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
2055 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
2056 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
2057 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
2058 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
2059 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
2060 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
2061
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2062 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
2063 self.assertRaises(
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2064 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
2065 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
2066 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
2067
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2068 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
2069 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2070 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
2071 self.quote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2072 1)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2073
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2074 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
2075 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2076 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
2077 self.unquote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2078 1)
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2079
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
2080
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2081 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
2082 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
2083
f71d34dda19f Add an optional C-implementation for configmix.config.unquote and configmix.config.pathstr2path.
Franz Glasner <fzglas.hg@dom66.de>
parents: 525
diff changeset
2084 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
2085 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
2086 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
2087 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
2088 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
2089 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
2090 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
2091
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2092 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
2093 self.assertRaises(
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2094 TypeError,
491413368c7c Added also a fast C-implementation of configmix.config._split_ns
Franz Glasner <fzglas.hg@dom66.de>
parents: 542
diff changeset
2095 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
2096 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
2097
550
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2098 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
2099 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2100 TypeError,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2101 self.quote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2102 b":")
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2103
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2104 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
2105 self.assertRaises(
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2106 TypeError,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2107 self.unquote,
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2108 b":")
79db28e879f8 Provide a C-implementation of configmix.config.quote() also: fast_quote
Franz Glasner <fzglas.hg@dom66.de>
parents: 543
diff changeset
2109
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
2110
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2111 if __name__ == "__main__":
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2112 unittest.main()