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 --- packages/meshbay-hub/tests/test_transport_contracts.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'packages/meshbay-hub/tests/test_transport_contracts.py') diff --git a/packages/meshbay-hub/tests/test_transport_contracts.py b/packages/meshbay-hub/tests/test_transport_contracts.py index 978c2e5..c1ca36b 100644 --- a/packages/meshbay-hub/tests/test_transport_contracts.py +++ b/packages/meshbay-hub/tests/test_transport_contracts.py @@ -59,22 +59,22 @@ def transport(): @pytest.fixture(scope="module") def app(): - return APP.read_text() + return APP.read_text(encoding="utf-8") @pytest.fixture(scope="module") def chat(): - return CHAT_APP.read_text() + return CHAT_APP.read_text(encoding="utf-8") @pytest.fixture(scope="module") def group_page(): - return GROUP_PAGE.read_text() + return GROUP_PAGE.read_text(encoding="utf-8") @pytest.fixture(scope="module") def create_group(): - return CREATE_GROUP.read_text() + return CREATE_GROUP.read_text(encoding="utf-8") def test_chat_history_pages_backwards(transport): @@ -187,7 +187,7 @@ def test_messages_are_keyed_by_id_not_index(chat): def test_presence_has_three_states_and_a_label_for_each(app): for state in ("online", "offline", "unknown"): - assert f"presence-{state}" in (STATIC / "style.css").read_text() + assert f"presence-{state}" in (STATIC / "style.css").read_text(encoding="utf-8") assert "t('presence.' + state)" in app, ( "red and green are the pair colour-blind readers cannot separate, so " "the dot needs a title and an aria-label, not just a colour") @@ -278,7 +278,7 @@ def test_no_setter_survives_the_state_it_belonged_to(): """ import re for path in SPLIT_FILES: - app = path.read_text() + app = path.read_text(encoding="utf-8") declared = set(re.findall(r"const \[\s*\w+\s*,\s*(set\w+)\s*\]\s*=\s*useState", app)) # Names brought in from another module are defined, just not here. imported = set() -- cgit v1.2.3