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
|
name: Test
on:
push:
branches: [ main ]
pull_request:
workflow_dispatch:
# will cancel previous workflows triggered by the same event and for the same ref for PRs or same SHA otherwise
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ contains(github.event_name, 'pull_request') && github.event.pull_request.head.ref || github.sha }}
cancel-in-progress: true
defaults:
run:
shell: bash
jobs:
test:
name: ${{ matrix.os }} - ${{ matrix.py }}
runs-on: ${{ matrix.os }}
env:
motherduck_token: ${{ secrets.HARLEQUIN_MOTHERDUCK_TOKEN }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- MacOs-latest
- Windows-latest
py:
- "3.14"
- "3.13"
- "3.12"
- "3.11"
- "3.10"
steps:
- name: Check out Repo
uses: actions/checkout@v5
with:
persist-credentials: false
- name: Set up Python ${{ matrix.py }}
id: setup-python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.py }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
version: "0.9.3"
python-version: ${{ matrix.py }}
enable-cache: true
- name: Install python dependencies
run: |
uv sync --locked --group test
- name: Run tests
run: |
uv run --no-sync pytest -m "not online" ${{ matrix.os == 'Windows-latest' && '--force-flaky --max-runs=3' || '' }} --snapshot-warn-unused
- name: Store snapshot report on failure
uses: actions/upload-artifact@v4
if: failure()
with:
name: Snapshot Report ${{ matrix.os }} ${{ matrix.py }}
path: ./snapshot_report.html
|