mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-17 11:09:11 +02:00
115 lines
3.6 KiB
YAML
115 lines
3.6 KiB
YAML
name: Tests
|
|
|
|
env:
|
|
# enable colored output
|
|
PY_COLORS: 1
|
|
|
|
on:
|
|
push:
|
|
branches: ["main"]
|
|
paths:
|
|
- "src/**"
|
|
- "tests/**"
|
|
- "uv.lock"
|
|
- "pyproject.toml"
|
|
- ".github/workflows/**"
|
|
|
|
# run on all pull requests because these checks are required and will block merges otherwise
|
|
pull_request:
|
|
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
run_tests:
|
|
name: "Run tests: Python ${{ matrix.python-version }} on ${{ matrix.os }}"
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, windows-latest]
|
|
python-version: ["3.10"]
|
|
include:
|
|
- os: ubuntu-latest
|
|
python-version: "3.13"
|
|
fail-fast: false
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "uv.lock"
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install FastMCP
|
|
# run with upgrade to always test against the latest compatible versions
|
|
run: uv sync --upgrade
|
|
|
|
- name: Run tests (excluding integration and client_process)
|
|
run: |
|
|
if [ "${{ matrix.os }}" == "windows-latest" ]; then
|
|
uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process"
|
|
else
|
|
uv run pytest --inline-snapshot=disable tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
|
|
fi
|
|
shell: bash
|
|
|
|
- name: Run client process tests separately
|
|
run: uv run pytest --inline-snapshot=disable tests -m "client_process" -x
|
|
|
|
run_tests_lowest_direct:
|
|
name: "Run tests with lowest-direct dependencies"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "uv.lock"
|
|
python-version: "3.10"
|
|
|
|
- name: Install FastMCP with lowest-direct resolution
|
|
# run with lowest-direct to test against the minimum allowed dependency versions
|
|
run: uv sync --resolution lowest-direct
|
|
|
|
- name: Run tests (excluding integration and client_process)
|
|
run: uv run --resolution lowest-direct pytest --inline-snapshot=disable tests -m "not integration and not client_process" --numprocesses auto --maxprocesses 4 --dist worksteal
|
|
|
|
- name: Run client process tests separately
|
|
run: uv run --resolution lowest-direct pytest --inline-snapshot=disable tests -m "client_process" -x
|
|
|
|
run_integration_tests:
|
|
name: "Run integration tests"
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "uv.lock"
|
|
python-version: "3.10"
|
|
|
|
- name: Install FastMCP
|
|
# run with upgrade to always test against the latest compatible versions
|
|
run: uv sync --upgrade
|
|
|
|
- name: Run integration tests
|
|
# use longer per-test timeout for remote API calls (default is 5s)
|
|
run: uv run pytest tests -m "integration" --timeout=30 --numprocesses auto --maxprocesses 2 --dist worksteal
|
|
env:
|
|
FASTMCP_GITHUB_TOKEN: ${{ secrets.FASTMCP_GITHUB_TOKEN }}
|
|
FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_ID }}
|
|
FASTMCP_TEST_AUTH_GITHUB_CLIENT_SECRET: ${{ secrets.FASTMCP_TEST_AUTH_GITHUB_CLIENT_SECRET }}
|