steam-backlog-enforcer/steam_backlog_enforcer/tests
Krzysztof kuhy Rudnicki bfa4a6260f
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 / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint) (push) Waiting to run
Tests / test (push) Waiting to run
Tests / web-coverage (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
tests: cmd_stats tests no longer hit the network
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWxdzckyBH7fEbPywpr
2026-11-02 09:31:10 +01:00
..
__init__.py test: achieve 100% branch coverage across all python_pkg packages 2026-03-21 17:51:36 +01:00
_budget_dates.py budget: price the enforced budget by the 06:00 gaming day's leisure switch 2026-10-19 17:09:33 +02:00
_ctl_fixtures.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
_fake_proc.py Make serve re-runnable, and cover it to 100% 2026-08-29 18:52:11 +02:00
_fake_prompter.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
_fake_session.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
_fake_xlib.py Bill gaming time only while the user is actually playing 2026-08-28 19:24:14 +02:00
_isolate_control_plane.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
_isolate_incidents.py Stop the suite writing into the real incident log 2026-08-30 15:30:22 +02:00
_isolate_leisure.py budget: price the enforced budget by the 06:00 gaming day's leisure switch 2026-10-19 17:09:33 +02:00
_isolate_playtime.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
_isolate_reading.py budget: resolve gaming time from the shared earned_time registry 2026-10-04 19:01:27 +02:00
_isolate_shadow.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
_jobs_helpers.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
_ledger_fixtures.py budget: resolve gaming time from the shared earned_time registry 2026-10-04 19:01:27 +02:00
_leisure_fake_proc.py leisure Phase 2 (dormant): bill, warn and kill on the leisure budget from go-live 2026-10-19 16:40:49 +02:00
_main_helpers.py Release a game after one new achievement instead of 100% completion 2026-09-26 16:46:03 +02:00
_no_fast_install.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
_no_live_focus_project.py Pin earned-time v0.19.0, leisure-watch v0.2.4 2026-11-02 08:41:27 +01:00
_no_real_effects.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
_no_subprocess.py Install games with steam-game-installer (depotdownloader) for speed, falling back to steam://install 2026-09-25 18:45:27 +02:00
_no_systemd_run.py restart safety: own scope for launched Steam, hold the day's budget, re-arm warnings after a raise 2026-10-04 19:14:20 +02:00
_no_workout_http.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
_total_block_paths.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
_web_request.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
_zero_ach.py Always allow games with zero achievements 2026-11-01 22:00:35 +01:00
conftest.py Pin earned-time v0.19.0, leisure-watch v0.2.4 2026-11-02 08:41:27 +01:00
fast_install_log_excerpt.txt pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_achievement_skip.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_actions_abandon_manual_pick.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_actions_status_payload.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_actions.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_assignment_progress.py Release a game after one new achievement instead of 100% completion 2026-09-26 16:46:03 +02:00
test_atomic_write.py Show the gaming budget in the web UI 2026-08-29 07:17:42 +02:00
test_attribution_labels.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_backups.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_bonus_incident.py Pay an hour of gaming budget for a LeetCode solve 2026-08-30 15:22:18 +02:00
test_budget_games.py Show which games make up the gaming budget, and bill osu!lazer 2026-08-29 18:32:03 +02:00
test_budget_log_tail.py Remove engagement gating from the gaming budget 2026-09-02 18:14:27 +02:00
test_budget_resolve_leisure.py budget: price the enforced budget by the 06:00 gaming day's leisure switch 2026-10-19 17:09:33 +02:00
test_budget_resolve_reading.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_budget_resolve.py playtime: drop the Fri-Mon carry-over; log budget on change only 2026-10-18 21:37:29 +02:00
test_budget_view_collection.py tests: collecting test_budget_view never reads the host's leisure switch 2026-10-19 17:06:22 +02:00
test_budget_view_earners.py earned_time 0.5.0: per-day registry consumer (registry_for), pin v0.5.0 2026-10-09 21:13:12 +02:00
test_budget_view.py tests: collecting test_budget_view never reads the host's leisure switch 2026-10-19 17:06:22 +02:00
test_cmd_done_part2.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_cmd_playtime.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_cmd_serve.py Make serve re-runnable, and cover it to 100% 2026-08-29 18:52:11 +02:00
test_command_catalog.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_command_gate.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00
test_command_params.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_config_interactive_setup.py Show the gaming budget in the web UI 2026-08-29 07:17:42 +02:00
test_config.py budget: resolve gaming time from the shared earned_time registry 2026-10-04 19:01:27 +02:00
test_ctl_client.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_ctl_context.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_control.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_ops_privileged.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_ops.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_ctl_pending.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_protocol.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_reset_ops.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_restart.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_ctl_server_internals.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ctl_server.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_desktop_env.py Pass SDL_JOYSTICK_HIDAPI_LG4FF=0 to Steam so the G29 keeps force feedback 2026-09-14 21:35:15 +02:00
test_desktop_session_gating.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_desktop_user_cmd.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_do_enforce.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_enforce_demo.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00
test_enforce_loop_part2.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_enforce_loop_part3.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_enforce_loop.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_enforce_steps.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_enforcer_part2.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_enforcer.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_ensure_debug_port.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_ensure_steam_running.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_exception_visibility.py Timed store window that survives hosts reinstalls; whitelist exceptions stay visible 2026-10-03 13:43:32 +02:00
test_fast_install_dashboard.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_fast_install_failure.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_fast_install_guards.py fix: fast install ignores other downloads; install offers any allowed game 2026-10-16 15:21:00 +02:00
test_fast_install_helpers.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_fast_install_job_wait.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_fast_install_progress.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_fast_install_runs.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_file_wake.py budget: wake on screen-locker's log.json; stat stamps drop stale earner answers 2026-10-09 18:52:58 +02:00
test_first_credits.py earned_time 0.6.0: maturity-aware penalty start (first_credits), pin v0.6.0 2026-10-09 21:42:59 +02:00
test_game_install_guard.py Re-arm the no-library warning before install_game's early return 2026-08-24 14:04:54 +02:00
test_game_install_part2.py fix: fast install ignores other downloads; install offers any allowed game 2026-10-16 15:21:00 +02:00
test_game_install_part3.py Install games with steam-game-installer (depotdownloader) for speed, falling back to steam://install 2026-09-25 18:45:27 +02:00
test_game_install_queue.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_game_install.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_game_names.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_gaming_days.py playtime: drop the Fri-Mon carry-over; log budget on change only 2026-10-18 21:37:29 +02:00
test_gaming_reset.py playtime: drop the Fri-Mon carry-over; log budget on change only 2026-10-18 21:37:29 +02:00
test_hltb_build_search_payload.py Bring the HLTB modules under the 250-line cap 2026-08-24 15:23:13 +02:00
test_hltb_confidence_helpers.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_hltb_detail_extract_comp100_avg_and_high.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_detail_fetch_leisure_times_save_interval.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_detail_fetch_leisure_times.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_detail_process_game_detail.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_detail.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_fetch_hltb_detail_missing.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_hltb_part2.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_hltb_part3.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_hltb_pick_best_hltb_entry_alias_exact_match_beats_spinoff.py Bring the HLTB modules under the 250-line cap 2026-08-24 15:23:13 +02:00
test_hltb_pick_best_hltb_entry.py pylint: clear the mechanical residue, the howlongtobeatpy 1.0.23 call, and three duplicate blocks 2026-09-12 20:31:27 +02:00
test_hltb_progress_cb.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_hltb_search_extract_leisure_hours.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_search_fetch_batch_hltb.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_search_part2.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_search_url_memo.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_hltb_search_zero_comp_100_skipped.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_hltb_search.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_hltb.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_jobs_control.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_daemon_jobs.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_events.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_job_io.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_prompter.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_registry.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_jobs_runner_parts.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_runner.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_spawn.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_specs_errors.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_store.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_jobs_view.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_ledger_earners.py earned_time 0.6.0: maturity-aware penalty start (first_credits), pin v0.6.0 2026-10-09 21:42:59 +02:00
test_ledger_units.py deps: earned_time 0.8.0 (per-minute tutor credit), fix stale 15-minute block comments 2026-10-10 18:22:04 +02:00
test_leetcode_bonus.py LeetCode hour needs the day paid in full (earned_time 0.18.0); gate_off read live from leetcode-guard 2026-10-24 13:26:28 +02:00
test_leetcode_ledger_errors.py Pay an hour of gaming budget for a LeetCode solve 2026-08-30 15:22:18 +02:00
test_leetcode_ledger.py LeetCode hour needs the day paid in full (earned_time 0.18.0); gate_off read live from leetcode-guard 2026-10-24 13:26:28 +02:00
test_leetcode_paid_day.py LeetCode hour needs the day paid in full (earned_time 0.18.0); gate_off read live from leetcode-guard 2026-10-24 13:26:28 +02:00
test_leisure_kill_debounce.py leisure kill: sweep only after 30 s of continuous untrusted now.json 2026-10-19 17:04:38 +02:00
test_leisure_kill_start.py leisure kill: a reason's start time pins the process (PID reuse) 2026-10-19 17:10:44 +02:00
test_leisure_kill.py leisure kill: sweep only after 30 s of continuous untrusted now.json 2026-10-19 17:04:38 +02:00
test_leisure_mode.py leisure Phase 2 (dormant): bill, warn and kill on the leisure budget from go-live 2026-10-19 16:40:49 +02:00
test_leisure_never_kill.py leisure kill: never signal the desktop session, whatever now.json says 2026-10-19 17:03:09 +02:00
test_leisure_procs_identity.py leisure kill: wsg-grabber only as the program run; see through (deleted) exes 2026-10-19 17:01:21 +02:00
test_leisure_procs.py leisure Phase 2 (dormant): bill, warn and kill on the leisure budget from go-live 2026-10-19 16:40:49 +02:00
test_leisure_tick.py leisure Phase 2 (dormant): bill, warn and kill on the leisure budget from go-live 2026-10-19 16:40:49 +02:00
test_library_hider_ops.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_library_hider_part2.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_library_hider.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_main_abandon.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_dispatch_extra.py Timed store window that survives hosts reinstalls; whitelist exceptions stay visible 2026-10-03 13:43:32 +02:00
test_main_dispatch.py Split main.py (1076 lines) into a main/ package 2026-08-23 19:56:34 +02:00
test_main_done.py Split _actions, _whitelist, _cmd_done and hltb under the cap 2026-08-24 14:55:57 +02:00
test_main_entrypoint.py Split main.py (1076 lines) into a main/ package 2026-08-23 19:56:34 +02:00
test_main_gate.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_install_pick.py fix: fast install ignores other downloads; install offers any allowed game 2026-10-16 15:21:00 +02:00
test_main_install.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_main_misc_gating.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_misc.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_part2.py Release a game after one new achievement instead of 100% completion 2026-09-26 16:46:03 +02:00
test_main_part2b.py Install games with steam-game-installer (depotdownloader) for speed, falling back to steam://install 2026-09-25 18:45:27 +02:00
test_main_part2c.py Release a game after one new achievement instead of 100% completion 2026-09-26 16:46:03 +02:00
test_main_pick_cap.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_main_pick_keep.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_main_pick_manual_cascade.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_pick_manual.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_picks.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_main_shared.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00
test_main_status_two_picks.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_main_status.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00
test_mcp_actions.py Deduplicate snapshot loading, pick application and library hiding into shared helpers 2026-09-25 18:44:07 +02:00
test_mcp_gaming_time.py Show the gaming budget in the web UI 2026-08-29 07:17:42 +02:00
test_mcp.py Deduplicate snapshot loading, pick application and library hiding into shared helpers 2026-09-25 18:44:07 +02:00
test_no_real_effects.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_own_pick.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_owned_apps_cache.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_pacman.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_pick_completion.py Release a game after one new achievement instead of 100% completion 2026-09-26 16:46:03 +02:00
test_pick_keep.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_pick_manual_keep.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_playtime_block_part2.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_playtime_block.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_playtime_cutoff.py playtime: drop the Fri-Mon carry-over; log budget on change only 2026-10-18 21:37:29 +02:00
test_playtime_history.py Show which games make up the gaming budget, and bill osu!lazer 2026-08-29 18:32:03 +02:00
test_playtime_kill.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_playtime_log.py playtime: drop the Fri-Mon carry-over; log budget on change only 2026-10-18 21:37:29 +02:00
test_playtime_notify.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_playtime_part2.py Pay an hour of gaming budget for a LeetCode solve 2026-08-30 15:22:18 +02:00
test_playtime_policy.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_playtime_proctree.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_playtime_session.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_playtime_tick.py tests: block real kills/Steam spawns (a stale demo test killed the live game); enforce --demo is budget-only 2026-10-10 19:15:11 +02:00
test_playtime.py budget: resolve gaming time from the shared earned_time registry 2026-10-04 19:01:27 +02:00
test_polls_tracking_backfill_polls_for_finished.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_polls_tracking_part2.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_polls_tracking_report_assigned_confidence.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_polls_tracking_report_poll_confidence_chosen_zero_polls_report_poll_confidence_chosen_equals_min.py Split steam_api and _scanning_confidence under the cap 2026-08-24 14:25:43 +02:00
test_polls_tracking_report_poll_confidence_chosen_zero_polls.py Split steam_api and _scanning_confidence under the cap 2026-08-24 14:25:43 +02:00
test_polls_tracking.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_prompter.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_protondb_fetch_batch.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_protondb_fetch_one.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_protondb.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_reading_bonus.py Reading hour from book-guard: +1h gaming, 8h cap; base 5h->4h from 2026-10-01 2026-09-26 19:12:21 +02:00
test_release_lifecycle.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_remaining.py total block: two-unit countdown (2w 2d … 45s), ticking every second 2026-10-23 20:59:41 +02:00
test_scanning_assign_pick.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_scanning_cached_confidence_overlay_avoids_refetch.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_scanning_confidence_helpers_pick_next_shortest_candidate_no_echo_whe.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_scanning_confidence_helpers.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_scanning_part2.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_scanning_part3.py Install games with steam-game-installer (depotdownloader) for speed, falling back to steam://install 2026-09-25 18:45:27 +02:00
test_scanning_part4.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_scanning_pick_next_game_sequential.py Release a game after one new achievement instead of 100% completion 2026-09-26 16:46:03 +02:00
test_scanning_pick_next_game_unknown_hours.py Install games with steam-game-installer (depotdownloader) for speed, falling back to steam://install 2026-09-25 18:45:27 +02:00
test_scanning_pick_next_game.py Install games with steam-game-installer (depotdownloader) for speed, falling back to steam://install 2026-09-25 18:45:27 +02:00
test_scanning_tampering_window.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_scanning.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_serve_guard_lifecycle.py Stop the web UI serving numbers the enforcer is not applying 2026-08-29 23:39:40 +02:00
test_serve_guard.py Make the fd-scan test independent of iterdir() order 2026-08-29 18:57:01 +02:00
test_serve_stale.py Stop the web UI serving numbers the enforcer is not applying 2026-08-29 23:39:40 +02:00
test_serve_startup.py Make serve re-runnable, and cover it to 100% 2026-08-29 18:52:11 +02:00
test_shadow_budget.py shadow: no exception can escape into the enforce loop; warn once per pricing 2026-10-19 13:16:16 +02:00
test_shadow_guard.py shadow: forget expired warnings so varying messages cannot grow memory 2026-10-19 13:20:08 +02:00
test_shadow_log.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_shadow.py shadow: fail closed instead of raising on unreadable lock/fact inputs 2026-10-19 12:50:41 +02:00
test_stats_cmd_stats_refilter_called_when_ensure_rush_data_re.py Deduplicate snapshot loading, pick application and library hiding into shared helpers 2026-09-25 18:44:07 +02:00
test_stats_cmd_stats.py tests: cmd_stats tests no longer hit the network 2026-11-02 09:31:10 +01:00
test_stats_ensure_rush_data.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_stats_print_player_speed_scenario.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_stats_print_worst_example.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_stats_refresh_recently_played_completions.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_stats_sum_hours.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_stats_unplayable_rating_counts_linux_skipped.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_stats.py Bring _stats.py and scanning.py under the 250-line cap 2026-08-24 16:00:54 +02:00
test_status_api_stamp.py budget: wake on screen-locker's log.json; stat stamps drop stale earner answers 2026-10-09 18:52:58 +02:00
test_status_kept_picks.py pick keeps already-picked games; fast install reports progress 2026-10-23 20:14:12 +02:00
test_steam_api_scan_extras.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_steam_api_steam_a_p_i_client.py Split steam_api and _scanning_confidence under the cap 2026-08-24 14:25:43 +02:00
test_steam_api.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_steam_launch_lifecycle.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_steam_process_scope.py restart safety: own scope for launched Steam, hold the day's budget, re-arm warnings after a raise 2026-10-04 19:14:20 +02:00
test_steam_restart_guard.py Bill gaming time only while the user is actually playing 2026-08-28 19:24:14 +02:00
test_steam_restart.py Stop the enforcer launching Steam and notifications as root 2026-08-24 13:55:44 +02:00
test_store_blocker_block_via_hosts_install.py Point the iptables tests at the module that now holds the code 2026-08-24 15:07:58 +02:00
test_store_blocker_part2.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_store_blocker_unblock_store.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_store_blocker.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_store_window.py Timed store window that survives hosts reinstalls; whitelist exceptions stay visible 2026-10-03 13:43:32 +02:00
test_total_block_hosts.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_total_block_iptables.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_total_block_lifecycle.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_total_block_purge.py playtime: shadow leisure billing (C4); /proc scan from leisure_watch 2026-10-19 12:37:01 +02:00
test_total_block_remnants.py Split total-block, playtime and MCP by responsibility 2026-08-23 20:52:08 +02:00
test_total_block.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_update_restart_guard.py Bill gaming time only while the user is actually playing 2026-08-28 19:24:14 +02:00
test_web_art.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_auth.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_build.py Make serve re-runnable, and cover it to 100% 2026-08-29 18:52:11 +02:00
test_web_daemon.py fast install: never report a failed run as success; queue the manifest first 2026-10-24 08:36:57 +02:00
test_web_dataset_build_games.py Bring _web_dataset.py under the 250-line cap — cap campaign complete 2026-08-24 16:08:12 +02:00
test_web_dataset_compute_pace_vs_h_l_t_b_both_rush_and_leisure_interpolation_comp.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_web_dataset_compute_pace_vs_h_l_t_b.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_web_dataset_count_complete_since_start.py Grade against 3.14 too, not just run on it 2026-08-29 11:44:25 +02:00
test_web_dataset_dataset_to_payload.py Bring _web_dataset.py under the 250-line cap — cap campaign complete 2026-08-24 16:08:12 +02:00
test_web_dataset.py Bring every test file under the 250-line cap 2026-08-24 14:16:08 +02:00
test_web_errors.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_io.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_jobs.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_library.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_privileged.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_process.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_routes.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_server_routing.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_server_stale.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_server_static.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_server.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_setup.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_sse.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_web_views.py web control UI: all 24 commands in React, ctl.sock daemon, jobs, library browser; earned_time 0.7.0 2026-10-10 16:07:42 +02:00
test_whitelist_add_pending_exception.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_whitelist_immutable_flag_is_append_audit_log.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_whitelist_immutable_flag_is.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_whitelist.py Import split-out names from the modules that own them; drop the four lazy facades 2026-09-12 20:22:44 +02:00
test_workout_budget.py pylint: fold the remaining split-era duplicates back into single owners 2026-09-12 20:49:12 +02:00
test_zero_achievement_allowed.py Always allow games with zero achievements 2026-11-01 22:00:35 +01:00
test_zero_achievement_fail_closed.py Always allow games with zero achievements 2026-11-01 22:00:35 +01:00