Skip to content

Test new workflow

Test new workflow #8

Workflow file for this run

name: Unit Tests & Code Coverage
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch: # allow manual triggering
defaults:
run:
shell: bash -l {0}
jobs:
lint:
name: Code style
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Upgrade pip & test with pre-commit
run: |
set -vxeuo pipefail
python -m pip install --upgrade pip
python -m pip install pre-commit
pre-commit run --all-files
test-matrix:
name: Python ${{ matrix.python-version }} # - Redis ${{ matrix.redis-version }}
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
python-version:
- "3.11"
- "3.12"
# - "3.13" waiting for upstream packages
# redis-version:
# # - "6"
# - "7"
max-parallel: 5
env:
DISPLAY: ":99.0"
steps:
- uses: actions/checkout@v4
- name: Install OS libraries to test Linux PyQt apps
run: |
sudo apt update -y
sudo apt install -y \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-xinerama0 \
libxcb-xfixes0 \
libxkbcommon-x11-0 \
screen \
x11-utils \
xvfb
# FIXME: conflicts if redis is running on host (local runners)
# - name: Start Redis
# uses: supercharge/[email protected]
# with:
# redis-version: ${{ matrix.redis-version }}
# redis-remove-container: true # false by default
- name: Create environment Python ${{ matrix.python-version }} # - Redis ${{ matrix.redis-version }}
# needed for Unpack step
uses: mamba-org/setup-micromamba@v2
with:
cache-environment: true
cache-environment-key: env-key-${{ matrix.python-version }}
condarc: |
channels:
- conda-forge
- nodefaults
channel-priority: flexible
# environment-file: environment.yml
environment-name: anaconda-test-env-py-${{ matrix.python-version }} # -${{ matrix.redis-version }}
create-args: >-
coveralls
pytest
pytest-cov
pytest-qt
pytest-xvfb
python=${{ matrix.python-version }}
setuptools-scm
pyqt>5.15
pyepics
- name: Install this package with pip
shell: bash -l {0}
run: |
set -vxeuo pipefail
pip install -e .
- name: Run tests with pytest & coverage
shell: bash -l {0}
run: |
set -vxeuo pipefail
coverage run --concurrency=thread --parallel-mode -m pytest -vvv --exitfirst .
coverage combine
coverage report --precision 3
- name: Upload coverage data to coveralls.io
shell: bash -l {0}
run: |
set -vxeuo pipefail
micromamba list coveralls
which coveralls
coveralls debug
if [ "${GITHUB_TOKEN}" != "" ]; then
# only upload from GitHub runner
coveralls --service=github
else
echo "No credentials for upload to coveralls."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_FLAG_NAME: ${{ matrix.python-version }} # -${{ matrix.redis-version }}
COVERALLS_PARALLEL: true
# https://coveralls-python.readthedocs.io/en/latest/usage/configuration.html#github-actions-support
coveralls:
name: Report unit test coverage to coveralls
needs: test-matrix
runs-on: ubuntu-latest
container: python:3-slim
steps:
- name: Gather coverage and report to Coveralls
run: |
set -vxeuo pipefail
echo "Finally!"
pip3 install --upgrade coveralls
# debug mode: output prepared json and reported files list to stdout
# https://coveralls-python.readthedocs.io/en/latest/troubleshooting.html
coveralls debug
if [ "${GITHUB_TOKEN}" != "" ]; then
# only upload from GitHub runner
coveralls --service=github --finish
else
echo "No credentials for upload to coveralls."
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}