PYTHON-4975 Use justfile as the task runner #6158
Workflow file for this run
This file contains 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} | |
jobs: | |
static: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
- name: Install Python dependencies | |
run: | | |
python -m pip install -U pip hatch rust-just pre-commit | |
- 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: | |
# supercharge/mongodb-github-action requires containers so we don't test other platforms | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
python-version: ["3.9", "pypy-3.9", "3.13", "3.13t"] | |
name: CPython ${{ matrix.python-version }}-${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- if: ${{ matrix.python-version == '3.13t' }} | |
name: Setup free-threaded Python | |
uses: deadsnakes/[email protected] | |
with: | |
python-version: 3.13 | |
nogil: true | |
- if: ${{ matrix.python-version != '3.13t' }} | |
name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
allow-prereleases: true | |
- name: Install dependencies | |
run: | | |
pip install -U pip rust-just | |
if [[ "${{ matrix.python-version }}" == "3.13" ]]; then | |
pip install --pre cffi setuptools | |
pip install --no-build-isolation hatch | |
elif [[ "${{ matrix.python-version }}" == "3.13t" ]]; then | |
# Hatch can't be installed on 3.13t, use pytest directly. | |
pip install . | |
pip install -r requirements/test.txt | |
else | |
pip install hatch | |
fi | |
- name: Start MongoDB | |
uses: supercharge/[email protected] | |
with: | |
mongodb-version: 6.0 | |
- name: Run tests | |
run: | | |
if [[ "${{ matrix.python-version }}" == "3.13t" ]]; then | |
pytest -v --durations=5 --maxfail=10 | |
else | |
just test | |
fi | |
doctest: | |
runs-on: ubuntu-latest | |
name: DocTest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.9" | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
- name: Install dependencies | |
run: | | |
pip install -U hatch pip rust-just | |
- name: Start MongoDB | |
uses: supercharge/[email protected] | |
with: | |
mongodb-version: '8.0.0-rc4' | |
- name: Run tests | |
run: | | |
just docs-test | |
docs: | |
name: Docs Checks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
# Build docs on lowest supported Python for furo | |
python-version: '3.9' | |
- name: Install dependencies | |
run: | | |
pip install -U pip hatch rust-just | |
- name: Build docs | |
run: | | |
just docs | |
linkcheck: | |
name: Link Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
# Build docs on lowest supported Python for furo | |
python-version: '3.9' | |
- name: Install dependencies | |
run: | | |
pip install -U pip hatch rust-just | |
- name: Build docs | |
run: | | |
just docs-linkcheck | |
typing: | |
name: Typing Tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python: ["3.9", "3.11"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "${{matrix.python}}" | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
- name: Install dependencies | |
run: | | |
pip install -U pip hatch rust-just | |
- name: Run typecheck | |
run: | | |
just typing | |
make_sdist: | |
runs-on: ubuntu-latest | |
name: "Make an sdist" | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- uses: actions/setup-python@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'pyproject.toml' | |
# Build sdist on lowest supported Python | |
python-version: '3.9' | |
- 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@v4 | |
- 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@v5 | |
with: | |
cache: 'pip' | |
cache-dependency-path: 'sdist/test/pyproject.toml' | |
# Test sdist on lowest supported Python | |
python-version: '3.9' | |
- name: Start MongoDB | |
uses: supercharge/[email protected] | |
- 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 |