Skip to content

Add a GHA workflow to run tests and pre-commit checks (#2) #5

Add a GHA workflow to run tests and pre-commit checks (#2)

Add a GHA workflow to run tests and pre-commit checks (#2) #5

Workflow file for this run

name: test
on:
pull_request:
types:
- opened
- reopened
- synchronize
push:
branches:
- main
jobs:
changed-files:
runs-on: ubuntu-latest
outputs:
should_run_pytest: ${{ steps.check-pytest.outputs.src }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- id: check-pytest
name: Should run pytest
uses: dorny/paths-filter@v3
with:
filters: |
src:
- "async_batcher/**"
- "tests/**"
- "poetry.lock"
pytest:
needs: changed-files
if: ${{ needs.changed-files.outputs.should_run_pytest == 'true' }}
strategy:
fail-fast: false
matrix:
os: [ "ubuntu-latest", "macos-latest" ]
python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12" ]
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python ${{ matrix.python-version }}
id: setup-python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v4
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root --all-extras
- name: Install library
run: poetry install --no-interaction --all-extras
- name: Run tests
run: |
source .venv/bin/activate
pytest tests/
linter:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install pre-commit
run: pip install pre-commit
- name: Run pre-commit
run: pre-commit run --all-files