diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-25 11:09:12 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-25 12:07:49 +0200 |
| commit | 6348698322e5bfcb80d0ef0dcd833ba4e6179640 (patch) | |
| tree | 6d4f47a0a1745ef5ae912368d078cf681b9fcd19 /packages/meshbay-hub/tests/spa_source.py | |
| parent | 71ea15a926d02437a65b8d788834c46f4e6df9a3 (diff) | |
| download | meshbay-6348698322e5bfcb80d0ef0dcd833ba4e6179640.tar.gz | |
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 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/tests/spa_source.py')
| -rw-r--r-- | packages/meshbay-hub/tests/spa_source.py | 31 |
1 files changed, 31 insertions, 0 deletions
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'<script src="/a/\{v\}/([^"]+)"></script>') + + +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()) |