Skip to content

Standardize local and CI testing to use tox #129

Standardize local and CI testing to use tox

Standardize local and CI testing to use tox #129

Workflow file for this run

name: "🧪 Test"
# Controls when the action will run. Triggers the workflow on push or
# pull request events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
test:
name: "${{ matrix.os.name }} (${{ matrix.cpython }}-${{ matrix.architecture }})"
runs-on: "${{ matrix.os.runner }}"
defaults:
run:
shell: "bash"
strategy:
fail-fast: false
matrix:
os:
- name: "Linux"
runner: "ubuntu-latest"
- name: "macOS"
runner: "macos-latest"
- name: "Windows"
runner: "windows-latest"
architecture:
- "x64"
cpython:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
include:
# Add an x86 build for Windows runners.
- os:
name: "Windows"
runner: "windows-latest"
architecture: "x86"
steps:
- name: "Checkout the repository"
uses: actions/checkout@v4
- name: "Set up Python ${{ matrix.cpython }}-${{ matrix.architecture }}"
uses: actions/setup-python@v5
with:
python-version: "${{ matrix.cpython }}"
architecture: "${{ matrix.architecture }}"
- name: "Install build prerequisites (Linux)"
if: matrix.os.name == 'Linux'
run: |
sudo apt install libpcsclite-dev python3-all-dev python3-setuptools swig
- name: "Install build prerequisites (macOS)"
if: matrix.os.name == 'macOS'
run: |
brew install swig pylint
- name: "Install build prerequisites (Windows)"
if: matrix.os.name == 'Windows'
run: |
choco install swig --version 2.0.12 --allow-empty-checksums --yes --limit-output
swig -version
- name: "Determine virtual environment bin path"
shell: "bash"
run: |
echo 'venv-path=temp/${{ runner.os == 'Windows' && 'Scripts' || 'bin' }}' >> "$GITHUB_ENV"
- name: "Create a virtual environment"
run: |
python -m venv temp
${{ env.venv-path }}/python -m pip install --upgrade pip setuptools wheel
${{ env.venv-path }}/pip install tox
- name: "Test"
run: |
${{ env.venv-path }}/tox -e py${{ matrix.cpython }},coverage_report-ci
- name: "Coveralls"
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: "Build"
run: |
${{ env.venv-path }}/tox -e build
- name: "Upload wheel"
uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.os.name }}-${{ matrix.cpython }}-${{ matrix.architecture }}
path: dist/*.whl
- name: "Lint"
run: |
${{ env.venv-path }}/tox -e pylint