utils/gatelock/gatelock
Krzysztof kuhy Rudnicki 389832314a gatelock: split seven oversized test files by test group
Each file split at a class or concern boundary, never mechanically:

  test_arbiter.py       432 -> 222 + _lifecycle 183 + _release 201
  test_outputs.py       418 -> 187 + _randr 204 + _enumerator 126
  test_scrollable.py    374 -> 231 + _into_view 197
  test_escape.py        343 -> 175 + _budget 216
  test_window_surfaces  341 -> 110 + _lifecycle 104 + _preempt 182
  test_surfaces.py      282 -> 167 + _focus 154
  test_window.py        269 -> 143 + _grab 139

Test counts verified against a clean HEAD worktree, per file group rather
than in aggregate: arbiter 49/49, outputs+escape 84/84, window+surfaces
72/72, scrollable 18/18. The whole suite is 389 passed at 100% branch
coverage, identical to before.

The one non-mechanical part: _reply/_randr_display are module-level helpers
defined *between* classes, so they did not travel with the header and had to
be moved to the RandR file by hand — six tests failed until they did.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CFSGeWxHPY5rHUGrPqhcmG
2026-08-22 14:45:08 +02:00
..
tests gatelock: split seven oversized test files by test group 2026-08-22 14:45:08 +02:00
__init__.py gatelock: promote the priority queue from leetcode_guard 2026-08-21 12:33:43 +02:00
_arbiter.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_arming.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_config.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_density.py gatelock 0.4.0: the viewport moves for the user and nobody else 2026-08-03 15:50:51 +02:00
_detect.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_escape.py gatelock: extract the shared escape-hatch core 2026-07-25 15:35:20 +02:00
_fitcheck.py gatelock: make fit/scroll geometry tests immune to a real WM 2026-08-21 13:00:20 +02:00
_guards.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_hooks.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_keyboard.py Make lock surfaces keyboard-operable and safe on a 768px screen 2026-07-30 16:01:15 +02:00
_outputs.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_preempt.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
_queue.py gatelock: promote the priority queue from leetcode_guard 2026-08-21 12:33:43 +02:00
_recovery.py gatelock 0.4.1: re-focus a surface that comes back after a blip 2026-08-12 22:13:46 +02:00
_root.py Initial gatelock: shared lock-window + HMAC log-integrity backend 2026-06-19 17:39:44 +02:00
_scrollable.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_scrollfit.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_scrollkeys.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_surfaces.py gatelock v0.2.0: per-output locking, monotonic recovery, N-app arbitration 2026-07-25 14:30:03 +02:00
_userintent.py gatelock: split _scrollable.py 495 -> 243 lines across four modules 2026-08-22 14:28:21 +02:00
_vt.py Initial gatelock: shared lock-window + HMAC log-integrity backend 2026-06-19 17:39:44 +02:00
_window.py gatelock: split _window.py 571 -> 243 lines across four modules 2026-08-22 14:20:11 +02:00
log_integrity.py Initial gatelock: shared lock-window + HMAC log-integrity backend 2026-06-19 17:39:44 +02:00
widget_group.py gatelock: add shared button, heading/row and WidgetGroup 2026-08-14 23:54:52 +02:00
widgets.py gatelock: add shared button, heading/row and WidgetGroup 2026-08-14 23:54:52 +02:00