From 6348698322e5bfcb80d0ef0dcd833ba4e6179640 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Fri, 25 Sep 2026 11:09:12 +0200 Subject: test(hub): read the transport wherever it is split spa_source.transport_files() takes the classic transport*.js scripts from the hub's shell, in load order. Every test that read transport.js reads them all, the Node harnesses run them joined as one scope, the chat probe loads each, and the desktop shell must load them in order. Co-Authored-By: Claude Opus 5.5 --- packages/meshbay-hub/tests/spa_source.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'packages/meshbay-hub/tests/spa_source.py') diff --git a/packages/meshbay-hub/tests/spa_source.py b/packages/meshbay-hub/tests/spa_source.py index 7df98ca..cfeae60 100644 --- a/packages/meshbay-hub/tests/spa_source.py +++ b/packages/meshbay-hub/tests/spa_source.py @@ -7,6 +7,7 @@ without looking at it. So the tests that read the search code take it from here, the page and whatever it has been split into. """ +import re from pathlib import Path STATIC = Path(__file__).resolve().parents[1] / "src" / "meshbay_hub" / "static" @@ -26,3 +27,33 @@ def search_argv() -> str: """The same files, as the one argument the Node harnesses take.""" import os return os.pathsep.join(str(p) for p in search_files()) + + +# ── The transport: transport.js and the classic scripts split out of it ────── + +WEBAPP = STATIC.parent / "api" / "webapp.py" +CLASSIC_TAG = re.compile(r'') + + +def classic_scripts() -> list[str]: + """The classic (non-module) scripts of the hub's shell, in load order.""" + return CLASSIC_TAG.findall(WEBAPP.read_text(encoding="utf-8")) + + +def transport_files() -> list[Path]: + """Every file of the transport, in the order the shell loads them: the + classic scripts named `transport*.js`. Derived from the shell, so a part + added there is read here without anybody having to list it.""" + files = [STATIC / n for n in classic_scripts() if n.startswith("transport")] + assert files and files[0].name.startswith("transport"), files + return files + + +def transport_source() -> str: + return "\n".join(p.read_text(encoding="utf-8") for p in transport_files()) + + +def transport_argv() -> str: + """The same files, as the one argument the Node harnesses take.""" + import os + return os.pathsep.join(str(p) for p in transport_files()) -- cgit v1.2.3