diff --git a/tests/test_idp.py b/tests/test_idp.py index b2ec0580..c1dce45c 100644 --- a/tests/test_idp.py +++ b/tests/test_idp.py @@ -48,6 +48,10 @@ class TestVFS(unittest.TestCase): self.assertAxs(vn.axs, expected) def assertNodes(self, vfs, expected): + got = list(sorted(vfs.nodes.keys())) + self.assertEqual(got, [".hist"] + expected) + + def assertJump(self, vfs, expected): got = list(sorted(vfs.nodes.keys())) self.assertEqual(got, expected) @@ -55,6 +59,10 @@ class TestVFS(unittest.TestCase): vn = self.nav(au, vp) self.assertNodes(vn, expected) + def assertJumpAt(self, au, vp, expected): + vn = self.nav(au, vp) + self.assertJump(vn, expected) + def assertApEq(self, ap, rhs): if ANYWIN and len(ap) > 2 and ap[1] == ":": ap = ap[2:].replace("\\", "/") @@ -114,14 +122,14 @@ class TestVFS(unittest.TestCase): self.assertEqual(au.vfs.vpath, "") self.assertApEq(au.vfs.realpath, "") - self.assertNodes(au.vfs, []) + self.assertJump(au.vfs, []) self.assertAxs(au.vfs.axs, []) au.idp_checkin(None, "iua", "iga") - self.assertNodes(au.vfs, ["vg", "vu"]) - self.assertNodesAt(au, "vu", ["iua"]) # same as: - self.assertNodes(au.vfs.nodes["vu"], ["iua"]) - self.assertNodes(au.vfs.nodes["vg"], ["iga"]) + self.assertJump(au.vfs, ["vg", "vu"]) + self.assertJumpAt(au, "vu", ["iua"]) # same as: + self.assertJump(au.vfs.nodes["vu"], ["iua"]) + self.assertJump(au.vfs.nodes["vg"], ["iga"]) self.assertApEq(au.vfs.nodes["vu"].realpath, "") self.assertApEq(au.vfs.nodes["vg"].realpath, "") self.assertApEq(au.vfs.nodes["vu"].nodes["iua"].realpath, "/uiua") @@ -140,17 +148,17 @@ class TestVFS(unittest.TestCase): self.assertEqual(au.vfs.vpath, "") self.assertApEq(au.vfs.realpath, "") - self.assertNodes(au.vfs, ["vu"]) - self.assertNodesAt(au, "vu", ["ua", "ub"]) + self.assertJump(au.vfs, ["vu"]) + self.assertJumpAt(au, "vu", ["ua", "ub"]) self.assertAxs(au.vfs.axs, []) self.assertAxsAt(au, "vu", []) self.assertAxsAt(au, "vu/ua", [["ua"]]) self.assertAxsAt(au, "vu/ub", [["ub"]]) au.idp_checkin(None, "iua", "iga") - self.assertNodes(au.vfs, ["vg", "vu"]) - self.assertNodesAt(au, "vu", ["iua", "ua", "ub"]) - self.assertNodesAt(au, "vg", ["iga1", "iga2"]) + self.assertJump(au.vfs, ["vg", "vu"]) + self.assertJumpAt(au, "vu", ["iua", "ua", "ub"]) + self.assertJumpAt(au, "vg", ["iga1", "iga2"]) self.assertAxs(au.vfs.axs, []) self.assertAxsAt(au, "vu", []) self.assertAxsAt(au, "vu/iua", [["iua"]]) @@ -178,23 +186,23 @@ class TestVFS(unittest.TestCase): self.assertEqual(au.vfs.vpath, "") self.assertApEq(au.vfs.realpath, "") - self.assertNodes(au.vfs, ["g", "ga", "gb"]) + self.assertJump(au.vfs, ["g", "ga", "gb"]) self.assertAxs(au.vfs.axs, []) au.idp_checkin(None, "iua", "ga") - self.assertNodes(au.vfs, ["g", "ga", "gb"]) + self.assertJump(au.vfs, ["g", "ga", "gb"]) self.assertAxsAt(au, "g", [["iua"]]) self.assertAxsAt(au, "ga", [["iua"]]) self.assertAxsAt(au, "gb", []) au.idp_checkin(None, "iua", "gb") - self.assertNodes(au.vfs, ["g", "ga", "gb"]) + self.assertJump(au.vfs, ["g", "ga", "gb"]) self.assertAxsAt(au, "g", [["iua"]]) self.assertAxsAt(au, "ga", []) self.assertAxsAt(au, "gb", [["iua"]]) au.idp_checkin(None, "iua", "ga|gb") - self.assertNodes(au.vfs, ["g", "ga", "gb"]) + self.assertJump(au.vfs, ["g", "ga", "gb"]) self.assertAxsAt(au, "g", [["iua"]]) self.assertAxsAt(au, "ga", [["iua"]]) self.assertAxsAt(au, "gb", [["iua"]]) @@ -209,17 +217,17 @@ class TestVFS(unittest.TestCase): self.assertAxs(au.vfs.axs, []) self.assertEqual(au.vfs.vpath, "") self.assertApEq(au.vfs.realpath, "") - self.assertNodes(au.vfs, []) + self.assertJump(au.vfs, []) au.idp_checkin(None, "iua", "") star = ["*", "iua"] - self.assertNodes(au.vfs, ["get", "priv"]) + self.assertJump(au.vfs, ["get", "priv"]) self.assertAxsAt(au, "get/iua", [["iua"], [], [], [], star]) self.assertAxsAt(au, "priv/iua", [["iua"], [], []]) au.idp_checkin(None, "iub", "") star = ["*", "iua", "iub"] - self.assertNodes(au.vfs, ["get", "priv"]) + self.assertJump(au.vfs, ["get", "priv"]) self.assertAxsAt(au, "get/iua", [["iua"], [], [], [], star]) self.assertAxsAt(au, "get/iub", [["iub"], [], [], [], star]) self.assertAxsAt(au, "priv/iua", [["iua"], [], []]) @@ -227,7 +235,7 @@ class TestVFS(unittest.TestCase): au.idp_checkin(None, "iuc", "su") star = ["*", "iua", "iub", "iuc"] - self.assertNodes(au.vfs, ["get", "priv", "team"]) + self.assertJump(au.vfs, ["get", "priv", "team"]) self.assertAxsAt(au, "get/iua", [["iua", "iuc"], [], ["iuc"], [], star]) self.assertAxsAt(au, "get/iub", [["iub", "iuc"], [], ["iuc"], [], star]) self.assertAxsAt(au, "get/iuc", [["iuc"], [], ["iuc"], [], star]) diff --git a/tests/test_vfs.py b/tests/test_vfs.py index 0278f8f1..281c407d 100644 --- a/tests/test_vfs.py +++ b/tests/test_vfs.py @@ -52,6 +52,14 @@ class TestVFS(unittest.TestCase): def log(self, src, msg, c=0): pass + def assertNodes(self, vfs, expected): + got = list(sorted(vfs.nodes.keys())) + self.assertEqual(got, [".hist"] + expected) + + def assertJump(self, vfs, expected): + got = list(sorted(vfs.nodes.keys())) + self.assertEqual(got, expected) + def assertAxs(self, dct, lst): t1 = list(sorted(dct)) t2 = list(sorted(lst)) @@ -81,7 +89,7 @@ class TestVFS(unittest.TestCase): # defaults self.wipe_vfs(td) vfs = AuthSrv(Cfg(), self.log).vfs - self.assertEqual(vfs.nodes, {}) + self.assertNodes(vfs, []) self.assertEqual(vfs.vpath, "") self.assertEqual(vfs.realpath, td) self.assertAxs(vfs.axs.uread, ["*"]) @@ -90,7 +98,7 @@ class TestVFS(unittest.TestCase): # single read-only rootfs (relative path) self.wipe_vfs(td) vfs = AuthSrv(Cfg(v=["a/ab/::r"]), self.log).vfs - self.assertEqual(vfs.nodes, {}) + self.assertNodes(vfs, []) self.assertEqual(vfs.vpath, "") self.assertEqual(vfs.realpath, os.path.join(td, "a", "ab")) self.assertAxs(vfs.axs.uread, ["*"]) @@ -99,7 +107,7 @@ class TestVFS(unittest.TestCase): # single read-only rootfs (absolute path) self.wipe_vfs(td) vfs = AuthSrv(Cfg(v=[td + "//a/ac/../aa//::r"]), self.log).vfs - self.assertEqual(vfs.nodes, {}) + self.assertNodes(vfs, []) self.assertEqual(vfs.vpath, "") self.assertEqual(vfs.realpath, os.path.join(td, "a", "aa")) self.assertAxs(vfs.axs.uread, ["*"]) @@ -111,25 +119,25 @@ class TestVFS(unittest.TestCase): Cfg(a=["k:k"], v=[".::r:rw,k", "a/ac/acb:a/ac/acb:w:rw,k"]), self.log, ).vfs - self.assertEqual(len(vfs.nodes), 1) + self.assertNodes(vfs, ["a"]) self.assertEqual(vfs.vpath, "") self.assertEqual(vfs.realpath, td) self.assertAxs(vfs.axs.uread, ["*", "k"]) self.assertAxs(vfs.axs.uwrite, ["k"]) n = vfs.nodes["a"] - self.assertEqual(len(vfs.nodes), 1) + self.assertNodes(n, ["ac"]) self.assertEqual(n.vpath, "a") self.assertEqual(n.realpath, os.path.join(td, "a")) self.assertAxs(n.axs.uread, ["*", "k"]) self.assertAxs(n.axs.uwrite, ["k"]) n = n.nodes["ac"] - self.assertEqual(len(vfs.nodes), 1) + self.assertNodes(n, ["acb"]) self.assertEqual(n.vpath, "a/ac") self.assertEqual(n.realpath, os.path.join(td, "a", "ac")) self.assertAxs(n.axs.uread, ["*", "k"]) self.assertAxs(n.axs.uwrite, ["k"]) n = n.nodes["acb"] - self.assertEqual(n.nodes, {}) + self.assertNodes(n, []) self.assertEqual(n.vpath, "a/ac/acb") self.assertEqual(n.realpath, os.path.join(td, "a", "ac", "acb")) self.assertAxs(n.axs.uread, ["k"]) @@ -176,13 +184,13 @@ class TestVFS(unittest.TestCase): Cfg(a=["k:k"], v=[".::rw,k", "a:a:r"]), self.log, ).vfs - self.assertEqual(len(vfs.nodes), 1) + self.assertEqual(len(vfs.nodes), 2) self.assertEqual(vfs.vpath, "") self.assertEqual(vfs.realpath, td) self.assertAxs(vfs.axs.uread, ["k"]) self.assertAxs(vfs.axs.uwrite, ["k"]) n = vfs.nodes["a"] - self.assertEqual(len(vfs.nodes), 1) + self.assertEqual(len(vfs.nodes), 2) self.assertEqual(n.vpath, "a") self.assertEqual(n.realpath, os.path.join(td, "a")) self.assertAxs(n.axs.uread, ["*", "k"]) @@ -273,6 +281,6 @@ class TestVFS(unittest.TestCase): self.assertEqual(n.realpath, os.path.join(td, "src")) self.assertAxs(n.axs.uread, ["a", "asd"]) self.assertAxs(n.axs.uwrite, ["asd"]) - self.assertEqual(len(n.nodes), 0) + self.assertNodes(n, []) os.unlink(cfg_path)