Skip to content

Run the tests on macOS as well as Linux - #110

Merged
JohnCampionJr merged 1 commit into
mainfrom
ci-macos
Aug 30, 2026
Merged

JohnCampionJr merged 1 commit into
mainfrom
ci-macos

Conversation

@JohnCampionJr

Copy link
Copy Markdown
Collaborator

The library is headless and most of it is platform-neutral, but not all of it: the UTF-8 byte entry, the width tables and anything touching character sizes are the sort of thing that agrees on one platform and not the other. The hosts that embed this are developed on macOS, and Linux alone has been answering for both.

A separate job, not a matrix

build is the required status check. A matrix renames it to build (ubuntu-latest), and a required check that stops reporting under its own name is not failing — it never appears, and branch protection waits for it for ever.

That is precisely how documentation-only PRs became unmergeable here (#109), and a rename would do the same to every PR at once. So build-macos is added alongside and build is untouched.

Gated like perf

needs: changes with if: needs.changes.outputs.src != 'false', so a documentation-only PR does not spin up a macOS runner to build nothing.

It is free either way — standard GitHub-hosted runners are free and unlimited on public repositories, and macos-latest is a standard runner; only larger runners are billed there. The per-minute macOS rate in the billing docs applies to private repositories, which is an easy thing to misread. But a run that cannot tell anyone anything is still noise in the checks list.

Perf stays on one platform

Not an oversight. It builds three libraries and compares them against each other, reading the spread it observes as its own noise floor. A second platform in that mix would be measuring the platform rather than the change.

The library is headless and most of it is platform-neutral, but not all of
it: the UTF-8 byte entry, the width tables and anything touching character
sizes are the sort of thing that agrees on one platform and not the other,
and the hosts that embed this are developed on macOS. Linux alone has been
answering for both.

A SEPARATE job rather than a matrix on `build`. A matrix renames the check to
"build (ubuntu-latest)", and `build` is the REQUIRED status check here -- a
required check that stops reporting under its own name is not failing, it
never appears, and branch protection waits for it for ever. That is exactly
how documentation-only pull requests became unmergeable, and a rename would
do the same thing to every pull request at once.

Gated on the changes job like `perf` is: nothing under src/ changed means
nothing to build differently. Free either way, since standard GitHub-hosted
runners are free and unlimited on public repositories with macOS among them,
but a run that cannot tell anyone anything is still noise.

Perf stays on one platform on purpose. It compares three builds against each
other and reads the spread as noise; a second platform in that mix would be
measuring the platform.
@JohnCampionJr
JohnCampionJr merged commit 332ef7b into main Aug 30, 2026
4 checks passed
@JohnCampionJr
JohnCampionJr deleted the ci-macos branch August 30, 2026 15:00
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