Skip to content

ci: run the suite on Windows and macOS - #126

Merged
abhiksark merged 3 commits into
devfrom
ci/windows-matrix
Aug 21, 2026
Merged

ci: run the suite on Windows and macOS#126
abhiksark merged 3 commits into
devfrom
ci/windows-matrix

Conversation

@abhiksark

Copy link
Copy Markdown
Owner

Nothing in this project had ever executed on Windows. CI ran ubuntu-latest only, so the first Windows signal we ever received was the conda-forge build failing on a UnicodeEncodeError — a bug that had been reachable from ordinary pip installs the whole time (#73, fixed in #125).

Adds Windows and macOS at the supported floor and ceiling, leaving ubuntu to cover the versions in between:

os python
ubuntu-latest 3.9, 3.10, 3.11, 3.12, 3.13
windows-latest 3.9, 3.13
macos-latest 3.13

Two existing steps were Unix-only and had to be made portable: the dist/*.whl glob and the hardcoded /tmp/pythonlings-workspace path. The job now pins shell: bash on all platforms and uses runner.temp.

fail-fast: false, so one platform failing does not hide the others.

Also adds an explicit non-UTF-8 console check. The new _run_ascii integration tests from #125 already force PYTHONIOENCODING=ascii inside pytest, but this exercises the real console path on the platform where it actually bit.

This is expected to surface further Windows-specific issues — that is the point of merging it.

Nothing in this project had ever executed on Windows. CI ran ubuntu-latest
only, so the first Windows signal we ever received was a conda-forge build
failing on a UnicodeEncodeError that had been reachable from pip installs the
whole time.

Adds Windows and macOS at the supported floor and ceiling, leaving ubuntu to
cover the versions between, and makes the existing steps platform-neutral: the
wheel glob and workspace path were both Unix-only. Also asserts the CLI
survives a non-UTF-8 console, which is the specific regression that motivated
this.
@coderabbitai

coderabbitai Bot commented Aug 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 4008a26a-7f31-41bd-a0ee-55704dddc208

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Adding Windows to CI surfaced four failures, none of which had ever been
visible.

doctor crashed on a workspace it could not stat. Windows reports an
unresolvable path, a symlink loop among them, as ERROR_CANT_RESOLVE_FILENAME
with no matching errno, so it fell through the ELOOP and ENOENT branches and
the bare re-raise took down the command whose entire job is describing a broken
workspace. It now matches on the winerror as well, and any other OSError is
reported as a failed check rather than raised.

The other three were platform assumptions in the tests, not product defects:

- An unknown ~user stays literal on POSIX but expands to a path under the users
  directory on Windows. Both are reasonable; the assertion now checks the name
  reaches the report either way.
- The manifest echoes a bad exercise path with the platform separator, so the
  expected message is now separator-agnostic.
- The UTF-8 verify test set PYTHONIOENCODING on the child but let the parent
  decode with its own locale, which is not UTF-8 on Windows, so a correct ✓
  arrived mojibaked. The parent now decodes as UTF-8 too.
An unknown ~user stays literal on POSIX, so doctor reports the path as
unresolvable. Windows expands it to a path under the users directory, which is
merely missing, so doctor takes the does-not-exist branch instead. Both are
correct. Assert what holds either way -- a reported workspace failure naming
the user, and no traceback -- rather than pinning one platform's message.
@abhiksark
abhiksark merged commit ab583ac into dev Aug 21, 2026
9 checks passed
abhiksark added a commit to xjcway123/pythonlings that referenced this pull request Aug 21, 2026
Brings in the Windows and macOS CI matrix (abhiksark#126) so this TUI change is
exercised on Windows before merge, plus the ASCII-locale CLI fix (abhiksark#125).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant