mirror of
https://github.com/kuhyx/testsAndMisc.git
synced 2026-11-10 23:27:01 +01:00
github.com/kuhyx/system-maintenance, cloned to ~/system-maintenance First of the four live subsystems, and the one with no cross-unit source edges, so it establishes the pattern for the harder three. Passed in vmbox first -- the installer ran from an extracted-layout copy in the guest and detected its distro without any monorepo path -- then on the host. Its 21 Python and shell test files lived in linux_configuration/tests/, reaching bin/ through a shared conftest. Twenty moved with the code and got their own conftest; the shared one stays, since it serves several script directories that are not going anywhere. test_shutdown_timer_monitor.sh stays here. It is a pair test: it checks that digital_wellbeing's installer template and the monitor it installs still agree, so it belongs to whichever half owns the installer. It now reads the monitor from ~/system-maintenance and SKIPs when that checkout is absent. An intermediate version of that test fell back to /usr/local/bin, which HUNG -- the installed copy is stale and differs from source, so the test was comparing an installer template against a binary it never generated. Falling back to it would have been worse than skipping, so the fallback is gone and the comment says why. Also removed test_hosts_file_monitor.sh from shell-tests.yml's explicit list: it left with the subsystem, and CI would have failed on the missing file rather than quietly skipping it. Verified: 136 tests pass in the new repo, 202 still pass here, the pair test passes against the checkout and skips without it, and both the shell coverage gate and shellcheck are clean. Depth 294 -> 267. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PJrqKERAo5QUeEHWS5Asgp
68 lines
2.7 KiB
YAML
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.11"
|
|
# 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
|