summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/tests/spa_source.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/tests/spa_source.py')
-rw-r--r--packages/meshbay-hub/tests/spa_source.py31
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())