ci: add Python version matrix, macOS smoke lane, and path-filter fixes#1247
ci: add Python version matrix, macOS smoke lane, and path-filter fixes#1247kovtcharov-amd wants to merge 3 commits into
Conversation
|
Clean, targeted CI fix with no blocking issues — approving. Three small nits worth addressing, one of which is a genuine coverage gap. SummaryThis PR patches three real CI problems in one shot: the Lemonade smoke test was burning expensive STX hardware time on every PR regardless of what changed; MCP tests didn't trigger when Issues Found🟢 macOS job skips packaging validation (
|
|
Solid CI hygiene across the board — the path filters, version matrix, and macOS smoke lane all address real gaps that Issues🟢 Minor — Lemonade path filters don't cover the Lemonade test files (
|
|
The |
itomek
left a comment
There was a problem hiding this comment.
The path-filtering, version matrix, and macOS lane all address real gaps. One merge-ordering point worth calling out (not a code change here): this PR's premise is validating 3.10/3.11, but the py3.10 leg is currently red and you've noted it only goes green after #1256 lands and this rebases. Since that matrix leg has no continue-on-error (unlike the macOS lane), merging this before #1256 turns py3.10 into a permanently-failing required check — recommend sequencing #1256 first, then rebase and confirm green. The Lemonade path-filter gap is noted inline. pytest-timeout is enforced on macOS but not the Linux matrix — minor consistency nit. Approving on the understanding that the merge order is handled.
Generated by Claude Code
There was a problem hiding this comment.
The new path filter covers src/gaia/llm, installer, and actions, but not the root-level Lemonade test files. A PR editing only tests/test_lemonade_client.py (or _embeddings/_health) won't trigger this smoke test — the same gap you just fixed for MCP by adding src/gaia/cli.py. Add tests/test_lemonade*.py to both the push and pull_request paths blocks.
Generated by Claude Code
setup.py claims python_requires>=3.10 but CI only tested 3.12. Unit tests now run against 3.10/3.11/3.12 via a strategy matrix. A macOS smoke job (continue-on-error) catches platform-specific failures early. test_mcp.yml gains cli.py in its path filter so MCP subcommand changes trigger the suite, and test_lemonade_server.yml gets a path filter scoped to src/gaia/llm/ instead of firing on every PR. Closes #881
Add packaging validation step to the macOS smoke job matching the Linux job. Switch from `python -m pytest` to bare `pytest` for consistency with the rest of the workflow.
5d5fc90 to
c38c40f
Compare
Lemonade path filters missed tests/test_lemonade*.py, so edits to those files wouldn't trigger the smoke test. Linux matrix was also missing pytest-timeout, creating a divergence with the macOS job.
…#1256) Symlinks pointing into blocked directories (`.ssh`, `C:\Windows`, `/etc`, …) were not detected by `is_write_blocked()` on Python <3.12 — the write guardrail returned `False` when it should have returned `True`. The Python 3.10/3.11 version matrix (amd#1247) surfaced this via `test_symlink_to_blocked_directory_is_blocked`. On 3.12+ the test passed by accident because `Path.resolve()` internally delegates to `os.path.realpath`; on older versions it uses a separate resolver that can disagree after symlink traversal. The fix drops the redundant `.resolve()` call so `os.path.realpath` is the single source of truth for symlink resolution across all supported Python versions. ## Test plan - [ ] `python -m pytest tests/unit/test_security_edge_cases.py tests/unit/test_file_write_guardrails.py -xvs` — all 132 pass, 6 skipped (platform-specific) - [ ] CI matrix passes on Python 3.10, 3.11, 3.12, 3.13 Co-authored-by: Ovtcharov <kovtchar@amd.com>
setup.py claims
python_requires>=3.10but CI only tested 3.12 — compatibility with 3.10/3.11 was never validated. Unit tests now run against all three supported versions via a strategy matrix, and acontinue-on-errormacOS smoke job catches Darwin-specific failures before users hit them. MCP tests missed cli.py changes that affect MCP subcommands, and the Lemonade smoke test fired on every PR regardless of what changed.Test plan
Unit Tests (py3.10),Unit Tests (py3.11),Unit Tests (py3.12)appear as separate CI jobs on this PRUnit Tests (macOS smoke)appears and runs (green or yellow, not red —continue-on-error: true)src/gaia/cli.pyis in the changesetsrc/gaia/llm/changes)Closes #881