mirror of
https://github.com/fastapi/sqlmodel.git
synced 2026-02-04 11:44:01 +08:00
127 lines
3.7 KiB
YAML
127 lines
3.7 KiB
YAML
name: Test
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
workflow_dispatch:
|
|
inputs:
|
|
debug_enabled:
|
|
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
|
|
required: false
|
|
default: 'false'
|
|
schedule:
|
|
# cron every week on monday
|
|
- cron: "0 0 * * 1"
|
|
|
|
env:
|
|
UV_NO_SYNC: true
|
|
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
|
python-version: [ "3.14" ]
|
|
include:
|
|
- os: windows-latest
|
|
python-version: "3.9"
|
|
- os: ubuntu-latest
|
|
python-version: "3.10"
|
|
- os: macos-latest
|
|
python-version: "3.11"
|
|
- os: windows-latest
|
|
python-version: "3.12"
|
|
- os: ubuntu-latest
|
|
python-version: "3.13"
|
|
- os: macos-latest
|
|
python-version: "3.13"
|
|
fail-fast: false
|
|
runs-on: ${{ matrix.os }}
|
|
env:
|
|
UV_PYTHON: ${{ matrix.python-version }}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- name: Setup uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: |
|
|
pyproject.toml
|
|
uv.lock
|
|
# Allow debugging with tmate
|
|
- name: Setup tmate session
|
|
uses: mxschmitt/action-tmate@v3
|
|
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' }}
|
|
with:
|
|
limit-access-to-actor: true
|
|
- name: Install Dependencies
|
|
run: uv sync --locked --no-dev --group tests
|
|
- run: mkdir coverage
|
|
- name: Test
|
|
run: uv run bash scripts/test.sh
|
|
env:
|
|
COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}-${{ matrix.pydantic-version }}
|
|
CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}
|
|
- name: Store coverage files
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: coverage-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.pydantic-version }}
|
|
path: coverage
|
|
include-hidden-files: true
|
|
|
|
coverage-combine:
|
|
needs:
|
|
- test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: actions/setup-python@v6
|
|
with:
|
|
python-version-file: ".python-version"
|
|
- name: Setup uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: |
|
|
pyproject.toml
|
|
uv.lock
|
|
- name: Get coverage files
|
|
uses: actions/download-artifact@v7
|
|
with:
|
|
pattern: coverage-*
|
|
path: coverage
|
|
merge-multiple: true
|
|
- name: Install Dependencies
|
|
run: uv sync --locked --no-dev --group tests
|
|
- run: ls -la coverage
|
|
- run: uv run coverage combine coverage
|
|
- run: uv run coverage html --title "Coverage for ${{ github.sha }}"
|
|
- name: Store coverage HTML
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: coverage-html
|
|
path: htmlcov
|
|
include-hidden-files: true
|
|
- run: uv run coverage report --fail-under=99
|
|
|
|
# https://github.com/marketplace/actions/alls-green#why
|
|
alls-green: # This job does nothing and is only used for the branch protection
|
|
if: always()
|
|
needs:
|
|
- coverage-combine
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Decide whether the needed jobs succeeded or failed
|
|
uses: re-actors/alls-green@release/v1
|
|
with:
|
|
jobs: ${{ toJSON(needs) }}
|