diff options
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()) |