1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
name: Test
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test-package:
name: Test Package (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }})
runs-on: ubuntu-latest
permissions:
id-token: write # Required for Codecov OIDC token
strategy:
fail-fast: false
matrix:
python-version:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
django-version:
- '4.2'
- '5.0'
- '5.1'
- '5.2'
- 'main'
## include/exclude combinations, typically for the newest and oldest django/python versions.
include:
# https://docs.djangoproject.com/en/dev/faq/install/#what-python-version-can-i-use-with-django
- python-version: '3.8'
django-version: '4.2'
- python-version: '3.9'
django-version: '4.2'
- python-version: '3.14'
django-version: '5.2'
- python-version: '3.14'
django-version: 'main'
exclude:
- python-version: '3.13'
django-version: '5.0'
- python-version: '3.13'
django-version: '4.2'
- python-version: '3.10'
django-version: 'main'
- python-version: '3.11'
django-version: 'main'
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Get pip cache dir
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
- name: Cache
uses: actions/cache@v4
with:
path: ${{ steps.pip-cache.outputs.dir }}
key:
${{ matrix.python-version }}-v1-${{ hashFiles('**/pyproject.toml') }}-${{ hashFiles('**/tox.ini') }}
restore-keys: |
${{ matrix.python-version }}-v1-
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade tox tox-gh-actions
- name: Tox tests
run: |
tox -v
env:
DJANGO: ${{ matrix.django-version }}
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
name: Python ${{ matrix.python-version }}
use_oidc: true
test-demo-rp:
name: Test Demo Relying Party
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version:
- "22.x"
- "24.x"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up NodeJS
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Install dependencies
run: npm install
working-directory: tests/app/rp
- name: Run Lint
run: npm run lint
working-directory: tests/app/rp
- name: Run build
run: npm run build
working-directory: tests/app/rp
codecov-notify:
needs:
- test-package
- test-demo-rp
runs-on: ubuntu-latest
name: Codecov Notify
permissions:
id-token: write # Required for Codecov OIDC token
steps:
# - tell codecov to send notifications now that all jobs are complete.
# without this, codecov may notify before all coverage reports have been uploaded.
# `codecov: notify: manual_trigger: true` must be set in codecov.yml, to prevent
# processing on every upload.
# - preferred to after_n_builds so we don't need to update that number every
# time we add/remove jobs.
- name: Notify Codecov
uses: codecov/codecov-action@v5
with:
run_command: 'send-notifications'
use_oidc: true
success:
needs:
- test-package
- test-demo-rp
- codecov-notify
runs-on: ubuntu-latest
name: Test successful
steps:
- name: Success
run: echo Test successful
|