From 29e0133a298ca88f3fbf5323363e757388cdac60 Mon Sep 17 00:00:00 2001 From: beam Date: Tue, 27 Oct 2026 05:07:34 +0000 Subject: [PATCH] =?UTF-8?q?beam:=20tree=5Froot=20helper=20=E2=80=94=20port?= =?UTF-8?q?able=20seed=20path=20+=20import-time=20I/O=20guard=20(Q86=20pat?= =?UTF-8?q?tern)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wizard-work/beam/test_tree_root.py | 68 ++++++++++++++++++++++++++++++ wizard-work/beam/tree_root.py | 36 ++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 wizard-work/beam/test_tree_root.py create mode 100644 wizard-work/beam/tree_root.py diff --git a/wizard-work/beam/test_tree_root.py b/wizard-work/beam/test_tree_root.py new file mode 100644 index 0000000..7876bc1 --- /dev/null +++ b/wizard-work/beam/test_tree_root.py @@ -0,0 +1,68 @@ +import os +import sys +import tempfile +import pytest + +sys.path.insert(0, os.path.dirname(__file__)) +from tree_root import find_tree_root, assert_inside_tree, portable_seed + + +def test_find_root_walks_up(): + d = tempfile.mkdtemp() + root = os.path.join(d, "repo") + os.makedirs(os.path.join(root, "inbox")) + open(os.path.join(root, "WORK-QUEUE.md"), "w").write("x") + deep = os.path.join(root, "a", "b", "c") + os.makedirs(deep) + f = os.path.join(deep, "m.py") + open(f, "w").write("pass") + assert find_tree_root(f) == os.path.realpath(root) + + +def test_find_root_missing_raises(): + d = tempfile.mkdtemp() + with pytest.raises(FileNotFoundError): + find_tree_root(d) + + +def test_assert_inside_ok(): + root = tempfile.mkdtemp() + p = os.path.join(root, "inbox", "seed.json") + os.makedirs(os.path.dirname(p), exist_ok=True) + open(p, "w").write("{}") + assert assert_inside_tree(p, root) == os.path.realpath(p) + + +def test_assert_inside_escape_raises(): + root = tempfile.mkdtemp() + with pytest.raises(ValueError): + assert_inside_tree("/etc/passwd", root) + + +def test_portable_seed_inside(): + root = tempfile.mkdtemp() + os.makedirs(os.path.join(root, "inbox")) + p = portable_seed(root) + assert p.startswith(os.path.realpath(root) + os.sep) + + +def test_import_no_io(): + src = open(os.path.join(os.path.dirname(__file__), "tree_root.py")).read() + import builtins + orig = builtins.open + calls = [] + def guard(*a, **k): + calls.append(a) + raise RuntimeError("import-time I/O detected") + ns = {} + builtins.open = guard + try: + try: + exec(compile(src, "tree_root.py", "exec"), ns) + assert not calls, "import-time open calls: %r" % calls + except RuntimeError as e: + if "import-time I/O" in str(e): + pytest.fail("module performed import-time I/O") + raise + finally: + builtins.open = orig diff --git a/wizard-work/beam/tree_root.py b/wizard-work/beam/tree_root.py new file mode 100644 index 0000000..8d7e604 --- /dev/null +++ b/wizard-work/beam/tree_root.py @@ -0,0 +1,36 @@ +"""tree_root.py - derive a repo root from __file__ instead of a host-absolute path.""" +from __future__ import annotations + +import os + + +def find_tree_root(start, marker="WORK-QUEUE.md"): + cur = os.path.abspath(start) + if os.path.isfile(cur): + cur = os.path.dirname(cur) + while True: + if os.path.isfile(os.path.join(cur, marker)): + return cur + parent = os.path.dirname(cur) + if parent == cur: + raise FileNotFoundError("marker %r not found in any ancestor of %s" % (marker, start)) + cur = parent + + +def assert_inside_tree(path, root): + rp = os.path.realpath(path) + rr = os.path.realpath(root) + if rp == rr or rp.startswith(rr + os.sep): + return rp + raise ValueError("path %s escapes tree root %s" % (rp, rr)) + + +def portable_seed(root, rel="inbox/seed-2026-09-26.json"): + return assert_inside_tree(os.path.join(root, rel), root) + + +if __name__ == "__main__": + r = find_tree_root(__file__) + p = portable_seed(r) + print("root=", r) + print("seed=", p)