Refactor scripts #1589
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Python Tests | |
| on: | |
| push: | |
| branches: ["master", "v**"] | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: tests-${{ github.ref }} | |
| cancel-in-progress: true | |
| defaults: | |
| run: | |
| shell: bash -eux {0} | |
| permissions: | |
| contents: read | |
| jobs: | |
| static: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: "3.10" | |
| - name: Install Python dependencies | |
| run: | | |
| uvx just install | |
| - name: Run linters | |
| run: | | |
| just lint-manual | |
| - name: Run compilation | |
| run: | | |
| export PYMONGO_C_EXT_MUST_BUILD=1 | |
| pip install -v -e . | |
| python tools/fail_if_no_c.py | |
| - name: Run typecheck | |
| run: | | |
| just typing | |
| - run: | | |
| sudo apt-get install -y cppcheck | |
| - run: | | |
| cppcheck --force bson | |
| cppcheck pymongo | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Tests currently only pass on ubuntu on GitHub Actions. | |
| os: [ubuntu-latest] | |
| python-version: ["3.10", "pypy-3.10", "3.13t"] | |
| mongodb-version: ["8.0"] | |
| name: CPython ${{ matrix.python-version }}-${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: ${{ matrix.python-version }} | |
| - id: setup-mongodb | |
| uses: mongodb-labs/drivers-evergreen-tools@master | |
| with: | |
| version: "${{ matrix.mongodb-version }}" | |
| - name: Run tests | |
| run: uv run --extra test pytest -v | |
| doctest: | |
| runs-on: ubuntu-latest | |
| name: DocTest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: "3.10" | |
| - id: setup-mongodb | |
| uses: mongodb-labs/drivers-evergreen-tools@master | |
| with: | |
| version: "8.0" | |
| - name: Install dependencies | |
| run: uvx just install | |
| - name: Run tests | |
| run: | | |
| just setup-tests doctest | |
| just run-tests | |
| docs: | |
| name: Docs Checks | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: "3.10" | |
| - name: Install dependencies | |
| run: uvx just install | |
| - name: Build docs | |
| run: just docs | |
| linkcheck: | |
| name: Link Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: "3.10" | |
| - name: Install dependencies | |
| run: uvx just install | |
| - name: Build docs | |
| run: just docs-linkcheck | |
| typing: | |
| name: Typing Tests | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python: ["3.10", "3.11"] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: "${{matrix.python}}" | |
| - name: Install dependencies | |
| run: | | |
| uvx just install | |
| - name: Run typecheck | |
| run: | | |
| just typing | |
| integration_tests: | |
| runs-on: ubuntu-latest | |
| name: Integration Tests | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| enable-cache: true | |
| python-version: "3.10" | |
| - name: Install dependencies | |
| run: | | |
| uvx just install | |
| - id: setup-mongodb | |
| uses: mongodb-labs/drivers-evergreen-tools@master | |
| - name: Run tests | |
| run: | | |
| just integration-tests | |
| - id: setup-mongodb-ssl | |
| uses: mongodb-labs/drivers-evergreen-tools@master | |
| with: | |
| ssl: true | |
| - name: Run tests | |
| run: | | |
| just integration-tests | |
| make_sdist: | |
| runs-on: ubuntu-latest | |
| name: "Make an sdist" | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-python@v6 | |
| with: | |
| cache: 'pip' | |
| cache-dependency-path: 'pyproject.toml' | |
| # Build sdist on lowest supported Python | |
| python-version: "3.10" | |
| - name: Build SDist | |
| shell: bash | |
| run: | | |
| pip install build | |
| python -m build --sdist | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: "sdist" | |
| path: dist/*.tar.gz | |
| test_sdist: | |
| runs-on: ubuntu-latest | |
| needs: [make_sdist] | |
| name: Install from SDist and Test | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Download sdist | |
| uses: actions/download-artifact@v5 | |
| with: | |
| path: sdist/ | |
| - name: Unpack SDist | |
| shell: bash | |
| run: | | |
| cd sdist | |
| ls | |
| mkdir test | |
| tar --strip-components=1 -zxf *.tar.gz -C ./test | |
| ls test | |
| - uses: actions/setup-python@v6 | |
| with: | |
| cache: 'pip' | |
| cache-dependency-path: 'sdist/test/pyproject.toml' | |
| # Test sdist on lowest supported Python | |
| python-version: "3.10" | |
| - id: setup-mongodb | |
| uses: mongodb-labs/drivers-evergreen-tools@master | |
| - name: Run connect test from sdist | |
| shell: bash | |
| run: | | |
| cd sdist/test | |
| ls | |
| which python | |
| pip install -e ".[test]" | |
| PYMONGO_MUST_CONNECT=1 pytest -v -k client_context | |
| test_minimum: | |
| permissions: | |
| contents: read | |
| runs-on: ubuntu-latest | |
| name: Test minimum dependencies and Python | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6 | |
| with: | |
| python-version: "3.10" | |
| - id: setup-mongodb | |
| uses: mongodb-labs/drivers-evergreen-tools@master | |
| with: | |
| version: "8.0" | |
| - name: Run tests | |
| shell: bash | |
| run: | | |
| uv venv | |
| source .venv/bin/activate | |
| uv pip install -e ".[test]" --resolution=lowest-direct --force-reinstall | |
| pytest -v test/test_srv_polling.py test/test_dns.py test/asynchronous/test_srv_polling.py test/asynchronous/test_dns.py |