Files
wanderbooks/.github/workflows/portable.yml
T
swaitsandClaude Fable 5.1 1da01c3123
check / check (push) Canceled after 0s
portable / portable (macos-latest) (push) Canceled after 0s
portable / portable (windows-latest) (push) Canceled after 0s
two-user / two-user (push) Canceled after 0s
test(cli): the spec script's package export gives the audit override; macOS tests keep short paths
GitHub's check on 62d42b94: the spec script now runs `books.audit`
(P8), so the package gate is live when the script exports and the
run is behind the head; four tests failed on `audit_required`. The
script gives `without_audit_reason`, as a human would.

The portable macOS job, with the server's log in hand: "the books'
private folder's path is too long for its sockets". A Unix socket path
holds 104 bytes; the runner's temp folder plus a test home plus
`Library/Application Support/wanderbooks/run/` is longer. The job sets
TMPDIR=/tmp, so every test home is short there.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HS8WZziDnyxunC23MUxrLp
2026-10-29 17:49:11 -06:00

62 lines
2.4 KiB
YAML

# The portable builds (plan P11a step 0, D-56): the workspace builds and
# passes its tests on macOS and Windows, not only on Linux. A workflow of
# its own, not a job beside `check`: GitHub serves a job's log only when
# its whole run has completed, and `check` takes over an hour, so a macOS
# failure's reason was unreadable for that long while it sat in the same
# run. Here each OS's run completes on its own.
name: portable
on:
push:
pull_request:
workflow_dispatch:
concurrency:
group: portable-${{ github.ref }}
cancel-in-progress: true
jobs:
# The destination is one installation for macOS, Windows and Linux (D-56,
# P11a step 0): the workspace must build and pass its tests on each, not
# only here. `just check` (fmt, clippy, rustdoc, proofs' friends) stays
# the Linux job's; these run the build and the tests. The job tells
# which OS a failure is on; neither is allowed to hide the other.
portable:
name: portable (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
include:
- os: macos-latest
experimental: false
- os: windows-latest
experimental: true
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
# Same disk discipline as above: no incremental caches, line tables only.
env:
CARGO_INCREMENTAL: "0"
CARGO_PROFILE_DEV_DEBUG: line-tables-only
CARGO_PROFILE_TEST_DEBUG: line-tables-only
# macOS: a Unix socket path holds 104 bytes, and the runner's default
# temp folder (/var/folders/...) plus a test home plus
# `Library/Application Support/wanderbooks/run/` is longer than that;
# the server then refuses the root ("too long for its sockets"). The
# tests' temp homes go under /tmp there. Windows ignores TMPDIR.
TMPDIR: /tmp
steps:
- uses: actions/checkout@v4
- name: Rust (the version mise.toml pins)
shell: bash
run: rustup toolchain install 1.99 --profile minimal && rustup default 1.99
- name: Room for the build
shell: bash
run: df -h . | tail -1
- name: The server-only build (no viewer)
run: cargo build -p ledger-cli --no-default-features
- name: Everything compiles
run: cargo build --workspace --all-targets
- name: Tests
run: cargo test --workspace
- name: What the build used
if: always()
shell: bash
run: df -h . | tail -1