Skip to content

ci: run unit tests + offline smoke groups on a Linux/macOS/Windows runner matrix - #194

Open
javimosch wants to merge 1 commit into
masterfrom
mago/task-193
Open

javimosch wants to merge 1 commit into
masterfrom
mago/task-193

Conversation

@javimosch

Copy link
Copy Markdown
Owner

Summary

Adds .github/workflows/ci.yml: the zig unit test suite (zig build test --summary all) and the offline smoke suites (scripts/smoke.sh, scripts/smoke-features.sh --offline) now run on a native GitHub-hosted runner for every platform the release workflow ships a binary for:

Runner Release artifact covered
ubuntu-latest tau-linux-x86_64
ubuntu-24.04-arm tau-linux-aarch64
macos-15-intel tau-macos-x86_64
macos-latest tau-macos-aarch64
windows-latest tau-windows-x86_64

Triggers: pull_request, push to master, v* tag pushes (so the tagged commit is re-verified right at release time), workflow_dispatch, and workflow_call so the release workflow can later gate publishing on this matrix.

Portability fixes required to make the matrix green

  • src/args.zig / src/main.zig — parse() took a std.process.Args, whose POSIX-only .vector field broke zig build test compilation for x86_64-windows-gnu. parse() now takes a plain []const []const u8 argv slice; main materializes the platform argv itself (WTF-16 → UTF-8 via std.process.Args.Iterator). This also keeps all ~30 parser tests running on Windows instead of being skipped.
  • scripts/smoke.sh (acp group) — tau acp status/stop/start manage a daemon via pid files + signals, which is POSIX-only and returns an exit-111 {"err"} envelope on Windows. The group now pins both contracts: POSIX assertions unchanged; on Windows it asserts the 111 envelope and skips the daemon-state checks.
  • scripts/smoke.sh + scripts/smoke-features.sh — checks that exercise post-auth validation (fleet run without --goal, /goal without --session, the code-82 envelope check) now pass --api-key fake. Key resolution precedes those validations, so in a keyless environment they exited 106 before reaching the path under test. The offline suite is now deterministic with zero API keys.

Docs updated: CONTRIBUTING.md, AGENTS.md, CHANGELOG.md.

Verification

  • zig build test --summary all — 274/274 pass (Linux).
  • zig build test -Dtarget=<x> — test binary compiles for all five release targets, including x86_64-windows-gnu (fixed by the parse() change).
  • ./scripts/smoke.sh — 102 passed, 0 failed, 1 skipped in a keyless env (was 85/17/1 before the determinism fixes).
  • ./scripts/smoke-features.sh --offline — 26/0/0 (was 25/1/0).
  • zig build -Dtarget=x86_64-windows-gnu release build still compiles.

macOS/Windows runtime behavior of the suite is intentionally verified by the workflow itself — that is the point of the matrix.

Closes #193 (mago task #193)

…trix

Adds .github/workflows/ci.yml which runs `zig build test` and both offline
smoke suites on a native runner for each released platform (linux
x86_64/aarch64, macos x86_64/aarch64, windows x86_64) on PRs, master pushes,
and v* tags — so platform regressions fail before a release is cut.
`workflow_call` is exposed so the release workflow can gate on the matrix.

Portability fixes to make that matrix green:

- args.zig: parse() now takes a plain argv slice instead of
  std.process.Args, whose POSIX-only `.vector` field broke `zig build test`
  compilation for windows-gnu. main.zig materializes the platform argv
  (WTF-16 on Windows, UTF-8 on POSIX) into a UTF-8 slice itself.
- smoke.sh: the acp group now pins both documented daemon contracts —
  exit 0 + running:false on POSIX, exit 111 err envelope on Windows —
  instead of failing on the Windows leg.
- smoke.sh + smoke-features.sh: pass --api-key fake to checks exercising
  post-auth validation (fleet run without --goal, /goal without --session),
  so they are deterministic in keyless CI environments — key resolution
  precedes those checks and would exit 106 first.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Oct 11, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: fa6de122-3dba-48bd-9e95-c05f3189ff24

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

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 the zig test suite and smoke groups on a Linux/macOS/Windows CI matrix so every published binary platform is verified before release

2 participants