changeset 680:e71f8bd50342

Tests for the new feature that resolves references at jail roots
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 09 Jun 2023 22:28:18 +0200
parents aa39c1856de4
children 6a55cbc836f1
files tests/data/jail-root-ref.yml tests/test.py
diffstat 2 files changed, 49 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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}}'  
--- 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):