2021-08-24 14:21:34 +00:00
|
|
|
name: Test
|
|
|
|
|
|
|
|
on:
|
|
|
|
push:
|
2022-02-13 17:14:02 +00:00
|
|
|
branches:
|
|
|
|
- main
|
2021-08-24 14:21:34 +00:00
|
|
|
pull_request:
|
2023-07-29 10:32:47 +00:00
|
|
|
types:
|
|
|
|
- opened
|
|
|
|
- synchronize
|
2021-08-24 18:14:33 +00:00
|
|
|
workflow_dispatch:
|
|
|
|
inputs:
|
|
|
|
debug_enabled:
|
2023-07-29 10:32:47 +00:00
|
|
|
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
|
2021-08-24 18:14:33 +00:00
|
|
|
required: false
|
2023-07-31 19:48:21 +00:00
|
|
|
default: 'false'
|
2021-08-24 14:21:34 +00:00
|
|
|
|
|
|
|
jobs:
|
|
|
|
test:
|
2023-07-29 10:32:47 +00:00
|
|
|
runs-on: ubuntu-latest
|
2021-08-24 14:21:34 +00:00
|
|
|
strategy:
|
|
|
|
matrix:
|
2023-07-29 10:32:47 +00:00
|
|
|
python-version:
|
|
|
|
- "3.7"
|
|
|
|
- "3.8"
|
|
|
|
- "3.9"
|
|
|
|
- "3.10"
|
2021-08-24 14:21:34 +00:00
|
|
|
fail-fast: false
|
|
|
|
|
|
|
|
steps:
|
2023-07-29 10:32:47 +00:00
|
|
|
- uses: actions/checkout@v3
|
2021-08-24 14:21:34 +00:00
|
|
|
- name: Set up Python
|
2022-11-04 21:43:45 +00:00
|
|
|
uses: actions/setup-python@v4
|
2021-08-24 14:21:34 +00:00
|
|
|
with:
|
|
|
|
python-version: ${{ matrix.python-version }}
|
2021-08-24 18:14:33 +00:00
|
|
|
# Allow debugging with tmate
|
|
|
|
- name: Setup tmate session
|
|
|
|
uses: mxschmitt/action-tmate@v3
|
2023-07-31 19:48:21 +00:00
|
|
|
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled == 'true' }}
|
2021-08-24 18:14:33 +00:00
|
|
|
with:
|
|
|
|
limit-access-to-actor: true
|
2022-11-12 06:37:34 +00:00
|
|
|
- uses: actions/cache@v3
|
2021-08-24 14:21:34 +00:00
|
|
|
id: cache
|
|
|
|
with:
|
|
|
|
path: ${{ env.pythonLocation }}
|
2023-07-29 10:32:47 +00:00
|
|
|
key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-root-v2
|
2021-08-24 14:21:34 +00:00
|
|
|
- name: Install poetry
|
|
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
2023-07-29 10:32:47 +00:00
|
|
|
python -m pip install "poetry"
|
|
|
|
python -m poetry self add poetry-version-plugin
|
2021-08-24 14:21:34 +00:00
|
|
|
- name: Configure poetry
|
2021-08-24 18:14:33 +00:00
|
|
|
run: python -m poetry config virtualenvs.create false
|
2021-08-24 14:21:34 +00:00
|
|
|
- name: Install Dependencies
|
|
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
|
|
run: python -m poetry install
|
2021-08-24 18:14:33 +00:00
|
|
|
- name: Lint
|
|
|
|
run: python -m poetry run bash scripts/lint.sh
|
2022-11-04 22:01:37 +00:00
|
|
|
- run: mkdir coverage
|
2021-08-24 14:21:34 +00:00
|
|
|
- name: Test
|
2021-08-24 18:14:33 +00:00
|
|
|
run: python -m poetry run bash scripts/test.sh
|
2022-11-04 22:01:37 +00:00
|
|
|
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:
|
2023-07-29 10:32:47 +00:00
|
|
|
needs:
|
|
|
|
- test
|
2022-11-04 22:01:37 +00:00
|
|
|
runs-on: ubuntu-latest
|
|
|
|
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v3
|
|
|
|
|
|
|
|
- uses: actions/setup-python@v4
|
|
|
|
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
|
2023-07-29 10:32:47 +00:00
|
|
|
|
|
|
|
# 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) }}
|