Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/test_lemonade_server.yml
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,27 @@ on:
workflow_call:
push:
branches: [ main ]
paths:
- 'src/gaia/llm/**'
- 'src/gaia/installer/**'
- 'setup.py'
- '.github/workflows/test_lemonade_server.yml'
- '.github/actions/install-lemonade/**'
- '.github/actions/setup-venv/**'
- 'installer/**'
- 'tests/test_lemonade*.py'
pull_request:
branches: [ main ]
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'src/gaia/llm/**'
- 'src/gaia/installer/**'
- 'setup.py'
- '.github/workflows/test_lemonade_server.yml'
- '.github/actions/install-lemonade/**'
- '.github/actions/setup-venv/**'
- 'installer/**'
- 'tests/test_lemonade*.py'
merge_group:
workflow_dispatch:
inputs:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test_mcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ on:
branches: [ main ]
paths:
- 'src/gaia/mcp/**'
- 'src/gaia/cli.py'
- 'tests/mcp/**'
- 'setup.py'
- '.github/workflows/test_mcp.yml'
Expand All @@ -21,6 +22,7 @@ on:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'src/gaia/mcp/**'
- 'src/gaia/cli.py'
- 'tests/mcp/**'
- 'setup.py'
- '.github/workflows/test_mcp.yml'
Expand Down
53 changes: 49 additions & 4 deletions .github/workflows/test_unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,21 @@ permissions:

jobs:
unit-tests:
name: Run Unit Tests
name: Unit Tests (py${{ matrix.python-version }})
runs-on: ubuntu-latest
timeout-minutes: 30
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ready_for_ci')
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'
python-version: ${{ matrix.python-version }}

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
Expand All @@ -63,8 +67,8 @@ jobs:
# keyring + httpx + respx are required by tests/unit/connections/
# (issue #915). The in-memory keyring backend in tests/conftest.py
# avoids the SecretService daemon prerequisite on Linux runners.
uv pip install --system pytest pytest-cov pytest-asyncio pytest-mock pyfakefs \
keyring httpx respx
uv pip install --system pytest pytest-cov pytest-asyncio pytest-mock pytest-timeout \
pyfakefs keyring httpx respx
uv pip install --system -e ".[api]"

- name: Validate packaging integrity
Expand Down Expand Up @@ -139,3 +143,44 @@ jobs:
echo "Integration Tests:"
echo " - DatabaseMixin + Agent: Full agent lifecycle with database"
echo " - DatabaseAgent: Auto-registered database tools"

# Experimental macOS smoke test — validates core SDK imports and pure-Python
# unit tests on Darwin. continue-on-error until the full suite is macOS-clean.
unit-tests-macos:
name: Unit Tests (macOS smoke)
runs-on: macos-latest
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false || contains(github.event.pull_request.labels.*.name, 'ready_for_ci')
continue-on-error: true
steps:
- uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Install uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh

- name: Install dependencies
run: |
uv pip install --system pytest pytest-asyncio pytest-mock pytest-timeout \
pyfakefs keyring httpx respx
uv pip install --system -e ".[api]"

- name: Validate packaging integrity
run: |
echo "=== Validating Packaging Integrity ==="
echo "Checking setup.py packages, __init__.py files, and entry points"
echo ""
pytest tests/unit/test_packaging.py -v --tb=short
echo "✅ Packaging integrity checks passed"

- name: Run unit tests (macOS smoke)
env:
GAIA_MEMORY_DISABLED: "1"
run: |
echo "=== macOS Smoke Test ==="
echo "Running unit tests on macOS to catch platform-specific issues"
echo ""
pytest tests/unit/ -x --timeout=60 -v --tb=short
Loading