annotate tests/test.py @ 100:e3289a56ba80

Enhance docu
author Franz Glasner <f.glasner@feldmann-mg.com>
date Thu, 22 Mar 2018 16:22:22 +0100
parents 1b4d95f60650
children 1c2f8a96dec2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
2
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
3 import sys
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
4 import os
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
5 import unittest
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
6
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
7 sys.path.insert(
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
8 0,
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
9 os.path.abspath(
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
10 os.path.normpath(os.path.join(os.path.dirname(__file__), ".."))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
11
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
12 import configmix
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
13 import configmix.ini
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
14 import configmix.yaml
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
15 import configmix.py
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
16 from configmix.compat import u
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
17
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
18
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
19 TESTDATADIR = os.path.join(
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
20 os.path.abspath(os.path.dirname(__file__)),
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
21 "data")
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
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
24 class T01Basic(unittest.TestCase):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
25
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
26 """Check with low-level internal interfaces"""
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
27
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
28 def __check_types(self, cfg):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
29 self.assertEqual(u("the value"),
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
30 cfg.get("key1"))
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.assertEqual(2, cfg.get("key2"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
33 self.assertEqual(5.7, cfg.get("key3"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
34 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
35 self.assertTrue(cfg.get("key4"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
36 self.assertTrue(isinstance(cfg.get("key4"), bool))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
37 self.assertFalse(cfg.get("key5"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
38 self.assertTrue(isinstance(cfg.get("key5"), bool))
95
a0ed95975980 Test octal n umbers in values
Franz Glasner <hg@dom66.de>
parents: 93
diff changeset
39 self.assertEqual(255, cfg.get("key6"))
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
40
97
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
41 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
42 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
43 cfg.get("key1"))
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
44 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
45 cfg.get("key2"))
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
46 self.assertEqual(32,
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
47 cfg["tree1"]["key3"])
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
48 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
49 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
50 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
51
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
52 def test01_ini_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
53 cfg = configmix.ini.load(os.path.join(TESTDATADIR, "conf1.ini"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
54 self.__check_types(cfg)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
55
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
56 def test02_py_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
57 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf1.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
58 self.__check_types(cfg)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
59
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
60 def test03_yaml_types(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
61 with open(os.path.join(TESTDATADIR, "conf1.yml"), "rt") as f:
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
62 cfg = configmix.yaml.safe_load(f)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
63 self.__check_types(cfg)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
64
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
65 def test04_py_export_all(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
66 # When __all__ is given only it's keys are exported
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
67 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf2.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
68 self.assertEqual(u("the next value"), cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
69 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
70 self.assertTrue(cfg.get("key2") is None)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
71
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
72 def test05_py_hide_private(self):
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
73 # When no __all__ is given all symbols with leading "_" are hidden
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
74 cfg = configmix.py.load(os.path.join(TESTDATADIR, "conf3.py"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
75 self.assertEqual(u("the next value "), cfg.get("key1"))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
76 self.assertTrue(isinstance(cfg.get("key1"), type(u(''))))
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
77 self.assertTrue(cfg.get("_key2") is None)
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
78
97
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
79 def test06_ini_tree(self):
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
80 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
81 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
82
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
83 def test07_py_tree(self):
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
84 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
85 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
86
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
87 def test08_yaml_tree(self):
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
88 with open(os.path.join(TESTDATADIR, "conf10.yml"), "rt") as f:
1b4d95f60650 Build a tree-ish configuration from an INI style configuration file
Franz Glasner <hg@dom66.de>
parents: 95
diff changeset
89 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
90 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
91
93
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
92
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
93 if __name__ == "__main__":
84b9578cacce Start with unit tests
Franz Glasner <hg@dom66.de>
parents:
diff changeset
94 unittest.main()