Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
121 lines
3.4 KiB
YAML
121 lines
3.4 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"
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version:
|
|
- "3.7"
|
|
- "3.8"
|
|
- "3.9"
|
|
- "3.10"
|
|
- "3.11"
|
|
- "3.12"
|
|
pydantic-version:
|
|
- pydantic-v1
|
|
- pydantic-v2
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
# 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
|
|
- uses: actions/cache@v3
|
|
id: cache
|
|
with:
|
|
path: ${{ env.pythonLocation }}
|
|
key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml', 'requirements-tests.txt') }}
|
|
- name: Install Dependencies
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
run: pip install -r requirements-tests.txt
|
|
- name: Install Pydantic v1
|
|
if: matrix.pydantic-version == 'pydantic-v1'
|
|
run: pip install --upgrade "pydantic>=1.10.0,<2.0.0"
|
|
- name: Install Pydantic v2
|
|
if: matrix.pydantic-version == 'pydantic-v2'
|
|
run: pip install --upgrade "pydantic>=2.0.2,<3.0.0"
|
|
- name: Lint
|
|
# Do not run on Python 3.7 as mypy behaves differently
|
|
if: matrix.python-version != '3.7' && matrix.pydantic-version == 'pydantic-v2'
|
|
run: bash scripts/lint.sh
|
|
- run: mkdir coverage
|
|
- name: Test
|
|
run: bash scripts/test.sh
|
|
env:
|
|
COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}
|
|
CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}
|
|
- name: Store coverage files
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: coverage
|
|
path: coverage
|
|
coverage-combine:
|
|
needs:
|
|
- test
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: '3.8'
|
|
|
|
- name: Get coverage files
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: coverage
|
|
path: coverage
|
|
|
|
- run: pip install coverage[toml]
|
|
|
|
- run: ls -la coverage
|
|
- run: coverage combine coverage
|
|
- run: coverage report
|
|
- run: coverage html --show-contexts --title "Coverage for ${{ github.sha }}"
|
|
|
|
- name: Store coverage HTML
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: coverage-html
|
|
path: htmlcov
|
|
|
|
# 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) }}
|