Skip to content

Add GitHub Actions workflow for Python tests with Poetry #7

Add GitHub Actions workflow for Python tests with Poetry

Add GitHub Actions workflow for Python tests with Poetry #7

Workflow file for this run

# Source: https://jacobian.org/til/github-actions-poetry/
# Run this job on pushes to `main`, and for pull requests. If you don't specify
# `branches: [main], then this actions runs _twice_ on pull requests, which is
# annoying.
# Name of the workflow
name: Python Unit Tests with Poetry
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
# Use Docker container to avoid GDAL dependency issues
container:
image: osgeo/gdal:ubuntu-small-latest
steps:
- uses: actions/checkout@v2
# Setup Python version specified
- uses: actions/setup-python@v2
with:
python-version: '3.10'
# Cache the installation of Poetry
- name: cache poetry install
uses: actions/cache@v2
with:
path: ~/.local
key: poetry-1.6.1-0
# Install Poetry using snok/install-poetry action
- uses: snok/install-poetry@v1
with:
version: 1.6.1
virtualenvs-create: true
virtualenvs-in-project: true
# Cache your project dependencies. This caches the virtual environment
# to speed up builds by caching the dependencies
- name: cache deps
id: cache-deps
uses: actions/cache@v2
with:
path: ./.venv
key: ${{ runner.os }}-venv-${{ hashFiles('**/poetry.lock') }}
# Install dependencies with Poetry, avoiding caching of the project itself
# The `if` statement ensures this only runs on a cache miss
- run: poetry install --no-interaction --no-root
if: steps.cache-deps.outputs.cache-hit != 'true'
# Install the project using Poetry to fully-exercise pyproject.toml
# This is necessary for projects that need to be installed, such as
# Python packages
- run: poetry install --no-interaction
# Run tests with pytest as configured in pyproject.toml
# This assumes that your pytest configuration is located in pyproject.toml
- run: poetry run pytest