From a45e77df1b0024707914a446aa89d33baa223787 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Sun, 27 Sep 2026 22:21:26 +0200 Subject: test: make both suites pass on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Most of these failed on Windows for reasons that had nothing to do with the code under test, which is how real Windows defects hid among them: - Read and write files as UTF-8, and talk to Node in UTF-8. read_text(), write_text() and subprocess text=True use the locale codepage, cp1252 on Windows: "é", "—" and "→" arrived as "?" or crashed, some sixty tests. Calls to PowerShell and schtasks are left alone -- they answer in the console codepage. - Import ESM harness modules by file URL (as_uri): a raw "C:\..." path is not a module specifier. - test_cli_golden: mask the tmp path in its JSON-escaped form, spell it the POSIX way, record on Linux, mask the protocol version (the recording had failed everywhere since the MNP 4.0 bump) and argparse's version-dependent quoting; point USERPROFILE at the tmp home, or `member invite` and `operator pair` wrote their codes into the developer's profile. - test_disk_io_off_loop: expect what a free loop can reach on the platform's timer, 15.6 ms on Windows, not an assumed 5 ms. - test_root_paths_are_operator_only: expect the OS's spelling of the path. - test_audio_meta_cache: find ffprobe with shutil.which. Node suite on Windows: 1489 passed, none failed. Hub suite: 3 failures left, all older than this change (two SQLite concurrency tests, one transfer resume). Co-Authored-By: Claude Opus 5.5 --- .../tests/test_streamed_download_reliability.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'packages/meshbay-hub/tests/test_streamed_download_reliability.py') diff --git a/packages/meshbay-hub/tests/test_streamed_download_reliability.py b/packages/meshbay-hub/tests/test_streamed_download_reliability.py index e1b3800..e60e833 100644 --- a/packages/meshbay-hub/tests/test_streamed_download_reliability.py +++ b/packages/meshbay-hub/tests/test_streamed_download_reliability.py @@ -195,8 +195,8 @@ def _run(tmp_path, body, *, control_after_ms=0, active=True, controlled_at_load=False, registered_at_load=False, worker_asleep=False): module = tmp_path / "downloads.mjs" - module.write_text(DOWNLOADS.read_text()) - (tmp_path / "package.json").write_text('{"type":"module"}') + module.write_text(DOWNLOADS.read_text(encoding="utf-8"), encoding="utf-8") + (tmp_path / "package.json").write_text('{"type":"module"}', encoding="utf-8") plan = { "controlAfterMs": control_after_ms, "active": active, @@ -211,12 +211,12 @@ def _run(tmp_path, body, *, control_after_ms=0, active=True, } script = tmp_path / "case.mjs" script.write_text( - (PRELUDE % {"plan": json.dumps(plan), "module": module.as_posix(), + (PRELUDE % {"plan": json.dumps(plan), "module": module.as_uri(), "control": control_budget_ms, "controlled": json.dumps(controlled_at_load)}) + body - + "\nout.log = log;\nconsole.log(JSON.stringify(out));\n") - proc = subprocess.run(["node", str(script)], capture_output=True, text=True, + + "\nout.log = log;\nconsole.log(JSON.stringify(out));\n", encoding="utf-8") + proc = subprocess.run(["node", str(script)], capture_output=True, text=True, encoding="utf-8", timeout=120) assert proc.returncode == 0, proc.stderr return json.loads(proc.stdout) @@ -338,7 +338,7 @@ def test_the_worker_is_primed_at_boot_not_at_the_first_click(tmp_path): from a module that actually imports it — `node --check` would not notice a missing import, which is a mistake this repo has already shipped once. """ - app = (STATIC / "app.js").read_text() + app = (STATIC / "app.js").read_text(encoding="utf-8") assert "downloads.primeServiceWorker()" in app, "nothing primes the worker" assert "import * as downloads from './downloads.js'" in app, ( "app.js calls downloads.primeServiceWorker() without importing downloads") @@ -350,7 +350,7 @@ def test_the_worker_is_primed_at_boot_not_at_the_first_click(tmp_path): def test_the_worker_answers_a_re_claim(tmp_path): """The page's last resort before declaring the path unavailable only works if sw.js implements the other half.""" - sw = (STATIC / "sw.js").read_text() + sw = (STATIC / "sw.js").read_text(encoding="utf-8") assert "mbdl-claim" in sw and "clients.claim()" in sw -- cgit v1.2.3