mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-10 22:27:01 +01:00
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (mypy, mypy) (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (pylint, pylint) (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (rest, ) (push) Waiting to run
Pre-commit checks / pre-commit (${{ matrix.group }}) (shellcheck, shellcheck) (push) Waiting to run
Python tests / test (push) Waiting to run
Shell tests / shell-tests (push) Waiting to run
Shell tests / lib-tests (push) Waiting to run
Shell tests / arch-tests (push) Waiting to run
Target: every push workflow <= 60 s. No check removed or weakened. - Pre-commit checks (164 s): mypy, pylint and shellcheck each get a matrix job, everything else runs in `rest` with SKIP=<those three> (pytest-coverage stays skipped everywhere, as before). The full requirements.txt install (49 s, plus the SDL headers for a pygame source build) is replaced by `pre-commit pyyaml packaging` -- the only third-party imports of the language: system hooks. Per-group pre-commit cache with same-interpreter restore-keys; SDL headers only on a pylint env rebuild; zsh only in rest; shellcheck only in its group. - Python tests (87 s): setup-uv with a cached wheel store instead of pip, pytest -n auto -q -p no:sugar (2051 tests, 100.00% under xdist locally across three seeds), apt install tried before `apt-get update`. - Shell tests (63 s): the lib/tests runner loop moves to its own job so it overlaps with bats and the side-effect-free tests; runners still run sequentially within it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KFwA9nymhUdTrVF65kigTV
76 lines
3.2 KiB
YAML
76 lines
3.2 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"
|
|
# uv with a cached wheel store replaces pip + setup-python's pip cache.
|
|
# Keyed on meta/requirements-test.txt, not the root requirements.txt
|
|
# symlink: the key is hashed from the file at this path, and hashing a
|
|
# symlink is not the same as hashing its target.
|
|
- uses: astral-sh/setup-uv@v10.2.0
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: meta/requirements-test.txt
|
|
# The runner image ships apt lists, so the install is tried against them
|
|
# first; `apt-get update` (~14 s of a 31 s step) runs only if that fails.
|
|
- name: Install system dependencies
|
|
run: |
|
|
set -euo pipefail
|
|
sudo apt-get install -y librsvg2-bin ||
|
|
{ sudo apt-get update && sudo apt-get install -y librsvg2-bin; }
|
|
rsvg-convert --version
|
|
# 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.
|
|
- name: Install dependencies
|
|
run: uv pip install --system -r meta/requirements-test.txt
|
|
# -n auto spreads the suite over every runner core (pytest-xdist is in
|
|
# requirements-test.txt; pytest-cov merges the workers' coverage):
|
|
# 26.8 s -> 13.8 s locally, same 2051 tests, same 100.00%. -q cancels
|
|
# the -v in pyproject's addopts, so 2000+ PASSED lines are not streamed
|
|
# to the log; -p no:sugar keeps pytest-sugar's redraws out of it too.
|
|
- name: Run pytest with coverage
|
|
run: >-
|
|
pytest -n auto -q -p no:sugar
|
|
--cov=python_pkg --cov-branch --cov-report=term-missing --cov-fail-under=100
|