testsAndMisc/.github/workflows/python-tests.yml
Krzysztof kuhy Rudnicki cd9bf57d38 Run CI on newest stable Python, which the pins now require
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-28 18:45:50 +02:00

68 lines
2.7 KiB
YAML

name: Python tests
on:
push:
branches: [main]
paths:
- "python_pkg/lichess_bot/**"
- "python_pkg/**"
- "tests/**"
- "linux_configuration/tests/**"
# Both spellings: the root requirements.txt is a SYMLINK into meta/,
# and GitHub matches path filters against the changed path as git
# records it. Editing meta/requirements.txt therefore did NOT match
# "requirements.txt", so a dependency fix silently skipped this
# workflow and the red run stayed on an older commit.
- "requirements.txt"
- "meta/requirements.txt"
- "meta/requirements-test.txt"
- ".github/workflows/python-tests.yml"
pull_request:
branches: [main]
paths:
- "python_pkg/lichess_bot/**"
- "python_pkg/**"
- "tests/**"
- "linux_configuration/tests/**"
# Both spellings: the root requirements.txt is a SYMLINK into meta/,
# and GitHub matches path filters against the changed path as git
# records it. Editing meta/requirements.txt therefore did NOT match
# "requirements.txt", so a dependency fix silently skipped this
# workflow and the red run stayed on an older commit.
- "requirements.txt"
- "meta/requirements.txt"
- "meta/requirements-test.txt"
- ".github/workflows/python-tests.yml"
workflow_dispatch: {}
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.x"
# Cache the pip DOWNLOAD cache, keyed on the requirements file, so a
# run that changes nothing about dependencies reuses the wheels
# instead of re-fetching ~80 packages from PyPI. Points at
# meta/requirements.txt, not the root symlink: the cache key is
# hashed from the file at this path, and hashing a symlink is not
# the same as hashing its target.
cache: pip
cache-dependency-path: meta/requirements-test.txt
- name: Install system dependencies
run: |
set -euo pipefail
sudo apt-get update && sudo apt-get install -y librsvg2-bin
rsvg-convert --version
- name: Install dependencies
run: |
python -m pip install --upgrade pip
# The TEST subset, not the full requirements.txt. This job runs
# pytest and nothing else, so the ~62 linters and formatters in the
# full list were pure install time. See meta/requirements-test.txt.
pip install -r meta/requirements-test.txt
- name: Run pytest with coverage
run: pytest --cov=python_pkg --cov-branch --cov-report=term-missing --cov-fail-under=100