Mercurial > hgrepos > Python > libs > ConfigMix
diff tests/test.py @ 305:f529ca46dd50
Implemented the "ref" namespace to get configuration tree references.
BUGS:
- Tests should be done more thoroughly and extensively
- Interaction of tree references and variable substitution should be
tested more properly
- Documentation is missing yet
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 26 Apr 2021 09:42:42 +0200 |
| parents | a03a6797533b |
| children | f77dba9fc164 |
line wrap: on
line diff
--- a/tests/test.py Sun Apr 25 18:05:26 2021 +0200 +++ b/tests/test.py Mon Apr 26 09:42:42 2021 +0200 @@ -503,5 +503,67 @@ self.assertEqual("22", cfg.getvar_s("key103")) +class T06References(unittest.TestCase): + + def setUp(self): + self._reset() + self._cfg = configmix.load( + os.path.join(TESTDATADIR, "conf20.yml"), + os.path.join(TESTDATADIR, "conf21.yml"), + os.path.join(TESTDATADIR, "conf22.ini"), + os.path.join(TESTDATADIR, "conf23.json"), + os.path.join(TESTDATADIR, "conf24.toml"), + os.path.join(TESTDATADIR, "reference-style.yml")) + + def tearDown(self): + self._reset() + + def _reset(self): + configmix.clear_assoc() + for pat, fmode in configmix.DEFAULT_ASSOC: + configmix.set_assoc(pat, fmode) + + def test01_reference_without_expansions(self): + self.assertTrue(isinstance(self._cfg.getvar("wsgi.profiler"), dict)) + self.assertTrue(isinstance( + self._cfg.getvar("wsgi.profiler.params"), dict)) + self.assertEqual("werkzeug", + self._cfg.getvar("wsgi.profiler.params.type")) + self.assertTrue(self._cfg.getvar("wsgi.profiler.params.params.evalex")) + self.assertEqual(self._cfg.getvar("wsgi.debugger"), + self._cfg.getvar("wsgi.profiler.params")) + + def test02_reference__with_expansions(self): + self.assertTrue(isinstance(self._cfg.getvar_s("wsgi.profiler"), dict)) + self.assertTrue(isinstance( + self._cfg.getvar_s("wsgi.profiler.params"), dict)) + self.assertTrue( + self._cfg.getvar_s("wsgi.profiler.params.params.evalex")) + self.assertEqual("werkzeug", + self._cfg.getvar_s("wsgi.profiler.params.type")) + + def test03_no_direct_attribute_access_to_expanded_references(self): + self.assertEqual( + "{{ref:#wsgi.debugger}}", + self._cfg.wsgi.profiler.params) + try: + self._cfg.wsgi.profiler.params.type + except AttributeError: + pass + else: + self.fail("no attribute error seen") + + def test04_indirect_recursive_references(self): + self.assertEqual( + "werkzeug", + self._cfg.getvar_s("testref.here.params.type")) + self.assertTrue( + self._cfg.getvar_s("testref.here.params.params.evalex")) + + def test05_recursive_expansion(self): + c = self._cfg.getvar_s("testref") + self.assertTrue(c["here"]["params"]["params"]["evalex"]) + + if __name__ == "__main__": unittest.main()
