name: Tests on: push: branches: [ main, develop, lanzelot-dev ] pull_request: branches: [ main ] workflow_dispatch: # Allow manual triggering jobs: test: runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ['3.12'] # Matches pyproject.toml requires-python == 3.12.* steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install uv uses: astral-sh/setup-uv@v7 - name: Install dependencies run: uv sync --extra mcp --extra tracing - name: Run tests with coverage run: | uv run pytest -m "not requires_api" - name: Upload coverage reports (Linux only) if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12' uses: actions/upload-artifact@v4 with: name: coverage-report path: htmlcov/ retention-days: 30 - name: Type checking (Linux only) if: matrix.os == 'ubuntu-latest' run: | uv run mypy ace/ --ignore-missing-imports