Tests #289
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: Tests | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
schedule: | |
- cron: '0 0 * * 0' | |
jobs: | |
test: | |
name: Python ${{ matrix.python-version }} - Django ${{ matrix.django-version }} - DRF ${{ matrix.drf-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [3.8, 3.9, '3.10', 3.11] | |
django-version: [3.2.18, 4.2] | |
drf-version: [3.14] | |
include: | |
# Test latest Django stable with newest Python versions | |
- python-version: '3.10' | |
django-version: "latest" | |
drf-version: 3.14 | |
- python-version: 3.11 | |
django-version: "latest" | |
drf-version: 3.14 | |
# Include Django 5 beta for future compatibility | |
- python-version: '3.10' | |
django-version: "5.0b1" | |
drf-version: 3.14 | |
- python-version: 3.11 | |
django-version: "5.0b1" | |
drf-version: 3.14 | |
exclude: | |
# Exclude older Python versions from newer Django | |
- python-version: 3.8 | |
django-version: "5.0b1" | |
- python-version: 3.9 | |
django-version: "5.0b1" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Cache Poetry dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pypoetry | |
key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}-${{ matrix.django-version }} | |
restore-keys: | | |
${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}- | |
${{ runner.os }}-poetry- | |
- name: Setup Poetry | |
uses: abatilo/actions-poetry@v2 | |
with: | |
poetry-version: "1.8.4" | |
- name: Install dependencies | |
run: poetry install --only main,test --all-extras | |
- name: Install Django version | |
run: | | |
if [ "${{ matrix.django-version }}" = "latest" ]; then | |
poetry run pip install --upgrade "Django" # Force upgrade to latest | |
else | |
poetry run pip install --upgrade "Django==${{ matrix.django-version }}" # Force specific version | |
fi | |
- name: Install DRF version | |
run: poetry run pip install --upgrade "djangorestframework==${{ matrix.drf-version }}" | |
- name: Show environment info | |
run: | | |
poetry run python --version | |
poetry run pip freeze | grep -E 'djangorestframework|Django' | |
- name: Run tests | |
run: make test | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
continue-on-error: true | |
with: | |
files: ./coverage.xml | |
fail_ci_if_error: false | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
code-quality: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Cache Poetry dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cache/pypoetry | |
key: ${{ runner.os }}-poetry-quality-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-poetry-quality- | |
- name: Setup Poetry | |
uses: abatilo/actions-poetry@v2 | |
with: | |
poetry-version: "1.7.1" | |
- name: Install dependencies | |
run: poetry install --only code-quality | |
- name: Run pre-commit | |
run: make run-hooks | |
lock-file-check: | |
name: Check poetry.lock for changes | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.11" | |
- name: Setup Poetry | |
uses: abatilo/actions-poetry@v2 | |
with: | |
poetry-version: "1.8.4" | |
- name: Install dependencies to check poetry.lock | |
run: poetry install | |
- name: Check if poetry.lock is up to date | |
run: poetry check --lock |