Mercurial > hgrepos > Python > libs > ConfigMix
changeset 459:9dc9cef1b9cd
Implement proper iteration support for jailed configurations
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 15 Dec 2021 08:48:37 +0100 |
| parents | a68240971d3d |
| children | d22985d6806e |
| files | configmix/config.py tests/data/conf10.py tests/test.py |
| diffstat | 3 files changed, 30 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/configmix/config.py Wed Dec 15 01:01:07 2021 +0100 +++ b/configmix/config.py Wed Dec 15 08:48:37 2021 +0100 @@ -940,6 +940,9 @@ real_varnames = [self._pathstr + vn for vn in varnames] return self._base.getfirstvar_s(*real_varnames, **kwds) + def __iter__(self): + return iter(self._base.getvarl_s(*self._path)) + def jailed(self, rootpath=None, root=None, bind_root=True): """Return a "jailed" configuration that effectively is a subjail of the current jail
--- a/tests/data/conf10.py Wed Dec 15 01:01:07 2021 +0100 +++ b/tests/data/conf10.py Wed Dec 15 08:48:37 2021 +0100 @@ -9,7 +9,12 @@ 'tree2': { 'key4': u"get this as `tree1.tree2.key4'", 'key5': True, - 'key6': u"off" + 'key6': u"off", + 'key7': [], + 'key8': [ + u"val1", + u"val2", + u"{{key1}}" + ] } } -
--- a/tests/test.py Wed Dec 15 01:01:07 2021 +0100 +++ b/tests/test.py Wed Dec 15 08:48:37 2021 +0100 @@ -1553,11 +1553,11 @@ jcfg = cfg.jailed(root=u"tree1") self.assertEqual( - set([u"key4", u"key5", u"key6"]), + set([u"key4", u"key5", u"key6", u"key7", u"key8"]), set(jcfg.getkeysl(u"tree2"))) self.assertEqual( - set([u"key4", u"key5", u"key6"]), + set([u"key4", u"key5", u"key6", u"key7", u"key8"]), set(jcfg.getkeys(u"tree2"))) self.assertEqual( @@ -1716,6 +1716,24 @@ else: self.fail("AttributeError expected") + def test_iteration_dict(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(rootpath=(u"tree1",)) + s = [] + for k in jcfg: + s.append(k) + s.sort() + self.assertEqual([u"key3", u"tree2"], s) + + def test_iteration_list(self): + cfg = configmix.load(os.path.join(TESTDATADIR, "conf10.py")) + jcfg = cfg.jailed(rootpath=(u"tree1", u"tree2", u"key8")) + s = [] + for k in jcfg: + s.append(k) + s.sort() + self.assertEqual([u"in the root namespace", u"val1", u"val2"], s) + if __name__ == "__main__": unittest.main()
