annotate tests/test.py @ 697:57fe110c50c8

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