steam-backlog-enforcer/.github/workflows/python-tests.yml
Krzysztof kuhy Rudnicki 1bdf360193 pick keeps already-picked games; fast install reports progress
pick and pick-manual no longer uninstall games that are already allowed:
the outgoing assignment is kept as a released pick (installed, no lock)
until 'pick --replace', done/check, or abandon-pick. The allowed set is
capped at max_manual_picks + 1; a pick over it is refused before the
candidate list / confirmation, naming the games. status and the web
Picks card list kept games with an Abandon button.

Fast install now tracks the installer log from the spawn offset: web
jobs drive the progress bar (per-depot %, phase) and echo a line every
30 s; daemon-started runs are exposed via ctl status / /api/daemon and
shown on the Dashboard.

Also: web deps bumped for dependency freshness (react-query 5.104.5,
typescript-eslint 8.72.0, vite 8.3.5, node 24.22.1 in CI).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CUaX4zAa6H4sMu3jd6RFdb
2026-10-23 20:14:12 +02:00

62 lines
1.7 KiB
YAML

name: Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
# uv with a cached wheel store installs requirements.txt in seconds;
# plain pip took ~20 s of a ~70 s run.
- uses: astral-sh/setup-uv@v10.2.0
with:
enable-cache: true
cache-dependency-glob: requirements.txt
- name: Install dependencies
run: uv pip install --system -r requirements.txt
# -n auto spreads the suite over every runner core (pytest-xdist is in
# requirements.txt); pytest-cov merges the workers' coverage.
- name: Run tests with coverage
run: |
python -m pytest steam_backlog_enforcer/tests/ \
-n auto \
-p no:sugar \
--cov=steam_backlog_enforcer \
--cov-branch \
--cov-fail-under=100 \
-q
# vitest's 100% bar used to run only in the local pre-push hook, which
# became a 1-second stamp check on 2026-09-20 (pre-commit's manual stage
# holds it now). Nothing else in CI runs the web suite, so this job is the
# only place that bar is enforced on every push.
web-coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24.22.1
cache: npm
cache-dependency-path: web/package-lock.json
- name: vitest --coverage, 100% (web UI)
run: |
npm --prefix web ci
npm --prefix web run coverage