Skip to content

Bump the gha-updates group with 7 updates (#103) #790

Bump the gha-updates group with 7 updates (#103)

Bump the gha-updates group with 7 updates (#103) #790

Workflow file for this run

name: test
permissions:
contents: read
on:
push:
tags-ignore:
- '*'
branches: ['main']
pull_request:
branches: ['main']
workflow_call:
workflow_dispatch:
inputs:
debug:
description: 'Open ssh debug session.'
required: true
default: false
type: boolean
schedule:
# Every Sunday at 9:00 AM Los Angeles time.
# GitHub cron is UTC; 09:00 PT == 17:00 UTC (PST).
- cron: '0 17 * * 0'
jobs:
test-linux:
runs-on: ubuntu-latest
permissions:
actions: write
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
django-version:
- 'dj42' # LTS April 2026
- 'dj52' # LTS April 2028
- 'dj61' # April 2027
exclude:
- python-version: '3.13'
django-version: 'dj42'
- python-version: '3.14'
django-version: 'dj42'
- python-version: '3.10'
django-version: 'dj61'
- python-version: '3.11'
django-version: 'dj61'
env:
COVERAGE_FILE: py${{ matrix.python-version }}-linux-${{ matrix.django-version }}.coverage
ENV_FILE: py${{ matrix.python-version }}-linux-${{ matrix.django-version }}-env
TEST_PYTHON_VERSION: ${{ matrix.python-version }}
TEST_DJANGO_VERSION: ${{ matrix.django-version }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
id: sp
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9
with:
enable-cache: false
- name: Upgrade all dependencies for our weekly runs
if: github.event_name == 'schedule'
run: uv lock --upgrade
- name: Setup Just
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
- name: Install Emacs
if: ${{ github.event.inputs.debug == 'true' }}
run: |
sudo apt install emacs
- name: Setup tmate session
if: ${{ github.event.inputs.debug == 'true' }}
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
timeout-minutes: 60
- name: Run Unit Tests
env:
TEST_PYTHON: ${{ steps.sp.outputs.python-path }}
run: |
just test-all -p "$TEST_PYTHON" --group "$TEST_DJANGO_VERSION"
- name: Store coverage files
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ env.COVERAGE_FILE }}
path: ${{ env.COVERAGE_FILE }}
- name: Store env files
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ env.ENV_FILE }}
path: requirements-test*.txt
test-macos:
runs-on: macos-latest
permissions:
actions: write
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.12', '3.14']
django-version:
- 'dj42' # LTS April 2026
- 'dj52' # LTS April 2028
- 'dj61' # April 2027
exclude:
- python-version: '3.12'
django-version: 'dj42'
- python-version: '3.14'
django-version: 'dj42'
- python-version: '3.10'
django-version: 'dj52'
- python-version: '3.14'
django-version: 'dj52'
- python-version: '3.10'
django-version: 'dj61'
- python-version: '3.12'
django-version: 'dj61'
env:
COVERAGE_FILE: py${{ matrix.python-version }}-macos-${{ matrix.django-version }}.coverage
ENV_FILE: py${{ matrix.python-version }}-macos-${{ matrix.django-version }}-env
TEST_PYTHON_VERSION: ${{ matrix.python-version }}
TEST_DJANGO_VERSION: ${{ matrix.django-version }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
id: sp
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9
with:
enable-cache: false
- name: Upgrade all dependencies for our weekly runs
if: github.event_name == 'schedule'
run: uv lock --upgrade
- name: Setup Just
run: |
brew install just
- name: install-emacs-macos
if: ${{ github.event.inputs.debug == 'true' }}
run: |
brew install emacs
- name: Setup tmate session
if: ${{ github.event.inputs.debug == 'true' }}
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
timeout-minutes: 60
- name: Run Unit Tests
env:
TEST_PYTHON: ${{ steps.sp.outputs.python-path }}
run: |
just test-all -p "$TEST_PYTHON" --group "$TEST_DJANGO_VERSION"
- name: Store coverage files
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ env.COVERAGE_FILE }}
path: ${{ env.COVERAGE_FILE }}
- name: Store env files
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ env.ENV_FILE }}
path: requirements-test*.txt
test-windows:
runs-on: windows-latest
permissions:
actions: write
defaults:
run:
shell: pwsh
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.12', '3.14']
django-version:
- 'dj42' # LTS April 2026
- 'dj52' # LTS April 2028
- 'dj61' # April 2027
exclude:
- python-version: '3.12'
django-version: 'dj42'
- python-version: '3.14'
django-version: 'dj42'
- python-version: '3.10'
django-version: 'dj52'
- python-version: '3.14'
django-version: 'dj52'
- python-version: '3.10'
django-version: 'dj61'
- python-version: '3.12'
django-version: 'dj61'
env:
COVERAGE_FILE: py${{ matrix.python-version }}-windows-${{ matrix.django-version }}.coverage
ENV_FILE: py${{ matrix.python-version }}-windows-${{ matrix.django-version }}-env
TEST_PYTHON_VERSION: ${{ matrix.python-version }}
TEST_DJANGO_VERSION: ${{ matrix.django-version }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
id: sp
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9
with:
enable-cache: false
- name: Upgrade all dependencies for our weekly runs
if: github.event_name == 'schedule'
run: uv lock --upgrade
- name: Setup Just
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
- name: install-vim-windows
if: ${{ github.event.inputs.debug == 'true' }}
uses: rhysd/action-setup-vim@febef33995d6649302e9d88dda81e071b68f16a7
- name: Setup tmate session
if: ${{ github.event.inputs.debug == 'true' }}
uses: mxschmitt/action-tmate@35b54afac29c97fb54faba5b513f8fbd1882f113
timeout-minutes: 60
- name: Run Unit Tests
env:
TEST_PYTHON: ${{ steps.sp.outputs.python-path }}
run: |
just test-all -p $env:TEST_PYTHON --group $env:TEST_DJANGO_VERSION
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
- name: Store coverage files
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ env.COVERAGE_FILE }}
path: ${{ env.COVERAGE_FILE }}
- name: Store env files
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
with:
name: ${{ env.ENV_FILE }}
path: requirements-test*.txt
coverage-combine:
needs: [test-linux, test-macos, test-windows]
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
id: sp
with:
python-version: '3.14'
allow-prereleases: true
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9
with:
enable-cache: false
- name: Setup Just
uses: extractions/setup-just@53165ef7e734c5c07cb06b3c8e7b647c5aa16db3
- name: Install Release Dependencies
env:
TEST_PYTHON: ${{ steps.sp.outputs.python-path }}
run: |
just setup "$TEST_PYTHON"
- name: Get coverage files
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
with:
pattern: "*.coverage"
merge-multiple: true
- run: ls -la *.coverage
- run: just coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f
with:
use_oidc: true
files:
./coverage.xml