proper name #134
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This workflow will for a variety of Python versions | |
# - install the code base | |
# - lint the code base | |
# - test the code base | |
# - upload the test coverage to codecov | |
# | |
# It will also | |
# - build the package | |
# - check the package | |
# | |
# https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries | |
name: Test code | |
on: | |
# Trigger the workflow on push | |
push: | |
# Every branch | |
branches: | |
- "**" | |
# But do not run this workflow on creating a new tag starting with 'v', e.g. 'v1.0.3' (see pypi-publish.yml) | |
tags-ignore: | |
- 'v*' | |
# Trigger the workflow on pull request | |
pull_request: | |
branches: | |
- "**" | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# Allow only one concurrent workflow, skipping runs queued between the run in-progress and latest queued. | |
# And cancel in-progress runs. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
# Job 1: Check code consistency | |
code-consistency: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Check validity of pyproject.toml | |
run: | | |
pip install 'validate-pyproject[all]' | |
validate-pyproject pyproject.toml | |
# Install Python linter and code formatter and run in the project root | |
- name: Install and run Ruff | |
run: | | |
pip install ruff | |
ruff check . | |
- name: Suggestion to fix linter issues | |
if: ${{ failure() }} | |
run: | | |
echo "In project root run 'ruff check . --fix' and commit changes to fix issues." | |
exit 1 | |
# Job 2: Test code and upload coverage to Codecov | |
test-code: | |
needs: code-consistency # previous job 'code-consistency' need to be finished first | |
# current job matrix. if modified, remember to UPDATE the strategy in the next job | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-24.04, windows-2022, macos-13, macos-14] | |
python-version: ['3.10', '3.11', '3.12'] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Upgrade package installer for Python | |
run: python -m pip install --upgrade pip | |
- name: Enable extra repository | |
shell: bash | |
run: | | |
pip config --user set global.extra-index-url https://easyscience.github.io/pypi/ | |
pip config --user set global.trusted-host easyscience.github.io | |
- name: Install Python dependencies | |
run: pip install '.[dev]' | |
- name: Run Python tests and create coverage report | |
run: > | |
pytest tests/ | |
--cov=./ | |
--cov-report=xml:coverage/coverage.xml | |
--junitxml=./coverage/junit.xml | |
--color=yes | |
-n auto | |
#- name: Upload test results to Codecov | |
# if: ${{ !cancelled() }} | |
# uses: codecov/test-results-action@v1 | |
# with: | |
# files: ./coverage/junit.xml | |
# fail_ci_if_error: true # optional (default = false) | |
# name: Pytest results | |
# token: ${{ secrets.CODECOV_TOKEN }} | |
#- name: Upload coverage report to Codecov | |
# uses: codecov/codecov-action@v4 | |
# with: | |
# files: ./coverage/coverage.xml | |
# env_vars: OS,PYTHON | |
# fail_ci_if_error: true # optional (default = false) | |
# name: Pytest coverage | |
# token: ${{ secrets.CODECOV_TOKEN }} | |
# env: | |
# OS: ${{ matrix.os }} | |
# PYTHON: ${{ matrix.python-version }} |