ci: give aarch64-darwin a runtime gate (suite + frontend smoke) #225
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!225
Loading…
Reference in a new issue
No description provided.
Delete branch "ci/darwin-smoke"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gives
aarch64-darwinboth halves of a runtime gate (#110), and fixes what the first runs of that gate found.The jobs
darwin-test—nix develop -c cargo nextest run --workspace --all-features --no-fail-fast, the commandpr.ymlruns, on the real target.
--no-fail-fastbecause a first red run on a target that has never run the suite shouldname every failure, not the one that finished first.
darwin-smoke— mirrorslinux-smoke:needs: darwin-build(the secondnix buildresolves to the store paththe build job produced), a per-run socket name,
-- catso the marker reaches the screen through tty echo, and apkillcleanup. It alsoneeds: darwin-test, aswindows-smokedoes.The smoke cannot pass yet. macOS has no equivalent of the Linux job's Xvfb + lavapipe, so the
macosrunner has toserve a logged-in Aqua session; it currently runs as a launchd daemon under a service account (
HOMEis/var/lib/forgejo-runner/default), and the run confirms it: session attach and daemon autospawn both succeed, the OSclipboard reports "not supported with the current system configuration", and no frame ever paints. This is the same
requirement
windows.ymlhas for DX12, and it is a host-configuration change, not a code one.What the suite found on macOS, and the fixes
The first full run was 3343 passed / 9 failed / 1 timed out. Two were real bugs in the bridge, the rest were tests
betting on timing or on a Linux-only syscall behavior.
Product fixes (both user-visible, both in the CHANGELOG):
cli.mdpromises an id stays in use "until the request's reply or streamterminal is published as a complete stdout line". The writer retired it after the delimiter, so a client reusing
the id the instant it read the terminal could be refused
malformed_requestfor an id the contract had already freed.0. The shutdown select had no precedence, so a client closing stdin after reading adaemon_lostterminal left both branches ready and tokio's random pick decided the exit code. Biased now, failuresfirst.
Test fixes:
sync()in the bridge harness replaces the 300–400 ms sleeps beforedaemon.kill(). The bridge dials before readingits first line, so a written request proved neither the dial nor the read; a probe round trip proves both.
run_golden's kill now has no timer at all. (Reproduced on Linux: deleting the sleep gives the identical panic.)a_daemon_write_failure_...usedshutdown(SHUT_RD)on the peer, which is local to the caller on BSD/macOS — thewrite succeeded there and the test hung to nextest's 180 s ceiling. It now drops the peer, and is renamed for what it
actually pins.
vttest_smokescenarios failed at exactly their 3 s draw budget.wait_forpolls and returns on the first hit,so the budget is now 30 s: free on success, tolerant on a busy machine.
Still open:
felis-daemon agent::tests::a_racing_teardown_never_strands_a_live_registrationfails on macOS withreadlinkreturning EINVAL — the path was not a symlink — which the code's staged-symlink-plus-rename should makeimpossible. Not reproducible on Linux (0 failures in 30 loaded runs), so this commit adds the path's actual type to the
failure message and the next macOS run says what it was.
No publish job. A claim moves on a target's first green run, not on the gate existing.
ci: run the frontend smoke on the macOS runnerto ci: give aarch64-darwin a runtime gate (suite + frontend smoke)00201ff51cbe2132c127View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.