From 5da590120c24fab681f4475dc82ef6ebbc737dbf Mon Sep 17 00:00:00 2001 From: malkuthro <166633396+malkuthro@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:41:42 +0200 Subject: [PATCH] fix(tests): canonicalize expected writer filepath on Windows (#238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(tests): canonicalize expected writer filepath on Windows build_pipeline_outputs canonicalizes output paths to forward slashes on every platform, but the execution-map writer test built its expectation from str(tmp_path), which yields backslashes on Windows — failing there while ubuntu CI stayed green. Normalize the expected prefix the same way test_easy_ai_pipeline.py already does. No-op on POSIX. Co-Authored-By: Claude Fable 5 * ci: run pytest job on a windows-latest matrix lane The suite is now Windows-clean (previous commit), but only ubuntu ran in CI - the path-separator regression this PR fixes was invisible until a local Windows run. Add windows-latest to the pytest job so that class of break gates PRs. fail-fast off so a Windows-only failure still reports alongside the green ubuntu lane. Safe rename: Protect-main requires only "Lint & Smoke" and "Security Gate", so Pytest -> "Pytest (os)" breaks no required check. Co-Authored-By: Claude Fable 5 --------- Co-authored-by: Claude Fable 5 --- .github/workflows/ci.yml | 9 ++++++++- tests/server/test_published_setup_runner.py | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a2d423..8771f48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,7 +71,14 @@ jobs: pytest: name: Pytest - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + # Keep both lanes reporting even when one fails — a Windows-only + # failure with a green ubuntu lane is exactly the signal this + # matrix exists to surface. + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v4 diff --git a/tests/server/test_published_setup_runner.py b/tests/server/test_published_setup_runner.py index 06c31c9..9894292 100644 --- a/tests/server/test_published_setup_runner.py +++ b/tests/server/test_published_setup_runner.py @@ -907,11 +907,15 @@ def test_get_run_reports_execution_map_writer_filepath_when_saver_history_is_emp status = await runner.getRun(queued["runId"]) + # build_pipeline_outputs canonicalizes paths to forward slashes on + # every platform, so the expected prefix must match — str(tmp_path) + # yields backslashes on Windows. + canonical_folder = str(output_folder).replace("\\", "/") assert status["outputs"][-1]["items"] == [ { "nodeId": "313", "kind": "text", - "value": f"{output_folder}/v007/external_v007.png", + "value": f"{canonical_folder}/v007/external_v007.png", } ] assert makedirs_calls == []