Skip to content

Run Physical's tests on macOS and on Linux on Arm in CI - #75

Merged
serionist merged 7 commits into
mainfrom
73-ci-macos-arm
Oct 13, 2026
Merged

serionist merged 7 commits into
mainfrom
73-ci-macos-arm

Conversation

@serionist

@serionist serionist commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

What and why

Step 2 of the 2027.1.1 plan (docs/plans/2026-10-13-2027-1-1.md, on main since #74; this PR adds step 2's progress log entry). Physical's tests ran in CI on Linux x64 and Windows only, and have never run on macOS. #70 will make Physical delete folders through the C library with flags whose values differ by system and architecture, so its tests should run on each before it lands. Two jobs, one matrix: macos-latest (Arm64) and ubuntu-24.04-arm, set up as the other jobs (locked restore, persist-credentials: false, actions pinned by SHA).

What the first runs found: Arm64 passed as it was. macOS failed one test, PhysicalPathOf_StopsWhereTheKernelDoes: the temp folder there is under /var, a link to /private/var, so a chain of exactly the link limit made in it passed one link more than the test counted, and Darwin would refuse it too. The chains are now made in the folder's physical path, and the test also reads through them, so the kernel itself confirms the limit (32 on macOS, 40 on Linux): exactly the limit opens, one link more fails with IOException.

Docs: AGENTS.md (the CI and Release bullets, the Physical tests line), REVIEW.md (Build and tests), CONTRIBUTING.md, and release.yml's comments now name the Physical jobs, and the Native AOT job, which they had left out, among what a release needs green from ci.yml.

Plan

docs/plans/2026-10-13-2027-1-1.md, step 2 (P9: the jobs land before #70 so whatever they find is fixed first).

Tested by

  • CI on the head commit: Linux, Windows, Native AOT, Physical (macOS) and Physical (Linux, Arm64) green. Physical's whole suite on macOS (Arm64) and Linux Arm64: 272 tests each, 13 inconclusive for the cases that need Windows or a store that fails on demand.
  • Locally: the changed test on Windows and on Linux x64 in a container.

Review

review-code, standard tier (Opus), two rounds: clean.

  • Round 1: no blocker or major. Fixed: the release docs now also name the Native AOT job (F1, on the maintainer's yes); "Arm64" throughout (F2); rewrapped paragraphs and test lines (F3); one variable instead of a repeated expression (F4); the kernel check (F5, on the maintainer's yes).
  • Round 2: F1–F5 verified, among them that .NET 10 throws exactly IOException for ELOOP on Linux and macOS; nothing new.
  • After the merge, on the maintainer's choice: Physical (macOS) and Physical (Linux, Arm64) become required checks on main, so a red one blocks a merge, not only a release.

One-way doors

None. The new jobs are part of ci.yml, whose success release.yml requires on a tagged commit, so they gate releases as the Windows job does.

Closes #73

Physical calls the C library itself and its rules differ by system, but its tests ran only on
Linux x64 and Windows: the folder delete of #70 will use flags whose values differ by system and
architecture. The new jobs build and run its tests on macos-latest and ubuntu-24.04-arm.

Refs #73
…s Physical's tests

On macOS the temp folder is under /var, a link to /private/var, so a chain of exactly the link
limit made there passed one link more than the test counted, and the kernel would refuse it too:
the test now makes its chains in the folder's physical path. AGENTS.md, REVIEW.md, CONTRIBUTING.md
and release.yml's comments name the new jobs.

Refs #73
…es on

The link-chain test now also reads through the kernel: a chain of exactly the limit opens and one
link more fails, which the macOS job checks against Darwin's 32 and Linux's against 40. release.yml
and AGENTS.md name the Native AOT job among those a release needs green; Arm64 is said throughout,
and the paragraphs the change touched are rewrapped.

Refs #73
@serionist
serionist marked this pull request as ready for review October 13, 2026 09:41
@serionist
serionist merged commit c2f7975 into main Oct 13, 2026
8 checks passed
serionist added a commit that referenced this pull request Oct 13, 2026
Every step of the 2027.1.1 plan is merged (#74, #75, #76): the changelog's 2027.1.1 section gets its date, which release.yml requires of a stable tag, and a short intro.

Refs #65, #70
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.

Run Physical's tests on macOS and on Linux on Arm in CI

1 participant