# HG changeset patch # User Franz Glasner # Date 1686342498 -7200 # Node ID e71f8bd50342af86ae9f8c0c5b6bd387d1f64a31 # Parent aa39c1856de4ceb12bc69b73f97c74b604c9ed8f Tests for the new feature that resolves references at jail roots diff -r aa39c1856de4 -r e71f8bd50342 tests/data/jail-root-ref.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/data/jail-root-ref.yml Fri Jun 09 22:28:18 2023 +0200 @@ -0,0 +1,25 @@ +# -*- coding: utf-8; mode: yaml; indent-tabs-mode: nil; -*- + +# Testing jail roots with references ("symlinks") + +%YAML 1.1 +--- + +target1: + tree1: + k1: v1 + k2: v2 + k3: v3 + ks: '{{target1.tree1.k3}}' + sub-tree1: + k4: v4 + k5: v5 + k6: v6 + ks: '{{target1.tree1.k3}}' + +target2: + tree2: '{{ref:#target1.tree1}}' + +the-root: + ref1: '{{ref:#target1.tree1}}' + ref2: '{{ref:#target2.tree2}}' diff -r aa39c1856de4 -r e71f8bd50342 tests/test.py --- a/tests/test.py Fri Jun 09 09:24:41 2023 +0200 +++ b/tests/test.py Fri Jun 09 22:28:18 2023 +0200 @@ -1998,6 +1998,30 @@ self.assertEqual((u"the-list", idx), jcfg2._path) self.assertEqual(u"the-list.~%d~." % (idx, ), jcfg2._pathstr) + def test_referenced_root(self): + cfg = configmix.load(os.path.join( + TESTDATADIR, "jail-root-ref.yml")) + jcfg = cfg.jailed(rootpath=("the-root", "ref1")) + print(repr(jcfg.getvarl_s())) + self.assertEqual("v3", jcfg.getvarl_s("ks")) + + + def test_referenced_root(self): + cfg = configmix.load(os.path.join( + TESTDATADIR, "jail-root-ref.yml")) + jcfg = cfg.jailed(rootpath=("the-root", "ref1")) + print(repr(jcfg.getvarl_s())) + self.assertEqual("v3", jcfg.getvarl_s("ks")) + self.assertEqual("v1", jcfg.getvarl_s("k1")) + + def test_referenced_root_in_subjail(self): + cfg = configmix.load(os.path.join( + TESTDATADIR, "jail-root-ref.yml")) + jcfg = cfg.jailed(rootpath=("the-root", "ref2")) + jcfg2 = jcfg.jailed(rootpath=("sub-tree1",)) + self.assertEqual("v6", jcfg2.getvarl_s("k6")) + self.assertEqual("v3", jcfg2.getvarl_s("ks")) + class _TParserMixin: def test_quote_and_unquote_empty(self):