diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 452fc63d1..8f83af7ae 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -12,12 +12,14 @@ on: - "tests/**" - "uv.lock" - "pyproject.toml" + - ".github/workflows/**" pull_request: paths: - "src/**" - "tests/**" - "uv.lock" - "pyproject.toml" + - ".github/workflows/**" workflow_dispatch: @@ -26,8 +28,13 @@ permissions: jobs: run_tests: - name: Run tests - runs-on: ubuntu-latest + name: "Run tests: Python ${{ matrix.python-version }} on ${{ matrix.os }}" + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + python-version: ["3.10"] + fail-fast: false steps: - uses: actions/checkout@v4 @@ -35,11 +42,11 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4 - - name: Set up Python - run: uv python install 3.11 + - name: Set up Python ${{ matrix.python-version }} + run: uv python install ${{ matrix.python-version }} - name: Install FastMCP - run: uv sync --extra dev + run: uv sync --extra tests - name: Run tests run: uv run pytest -vv diff --git a/README.md b/README.md index 760de3f83..8e25a9ea8 100644 --- a/README.md +++ b/README.md @@ -464,23 +464,20 @@ FastMCP requires Python 3.10+ and [uv](https://docs.astral.sh/uv/). ### Installation -Create a fork of this repository, then clone it: +For development, we recommend installing FastMCP with development dependencies, which includes various utilities the maintainers find useful. ```bash -git clone https://github.com/YouFancyUserYou/fastmcp.git +git clone https://github.com/jlowin/fastmcp.git cd fastmcp +uv sync --frozen --extra dev ``` -Next, create a virtual environment and install FastMCP: +For running tests only (e.g., in CI), you only need the testing dependencies: ```bash -uv venv -source .venv/bin/activate -uv sync --frozen --all-extras --dev +uv sync --frozen --extra tests ``` - - ### Testing Please make sure to test any new functionality. Your tests should be simple and atomic and anticipate change rather than cement complex patterns. diff --git a/pyproject.toml b/pyproject.toml index 4ceca0072..8c3c4152d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,16 +23,14 @@ requires = ["hatchling>=1.21.0", "hatch-vcs>=0.4.0"] build-backend = "hatchling.build" [project.optional-dependencies] -dev = [ - "copychat>=0.5.2", - "ipython>=8.12.3", - "pdbpp>=0.10.3", +tests = [ "pre-commit", - "pytest-xdist>=3.6.1", "pytest>=8.3.3", "pytest-asyncio>=0.23.5", + "pytest-xdist>=3.6.1", "ruff", ] +dev = ["fastmcp[tests]", "copychat>=0.5.2", "ipython>=8.12.3", "pdbpp>=0.10.3"] [tool.pytest.ini_options] asyncio_mode = "auto"