mirror of
https://github.com/kuhyx/utils.git
synced 2026-11-14 23:50:58 +01:00
The three Python packages pinned ruff twice at different versions: requirements.txt at 0.16.7, .pre-commit-config.yaml at v0.15.2. Only the older one ever ran, so `select = ["ALL"]` was enforced two minor versions behind. Measured before aligning: v0.15.2 reports 0 findings, every 0.16.x reports CPY001 on each file -- 70 crdt-sync, 23 freedays, 71 gatelock, and no other rule. Resolved by adding the notice rather than ignoring the rule, so the gate keeps its teeth. Two gatelock modules sat at exactly the 250-line cap, so a one-line header tipped them to 251. Both are split along a real seam rather than shaved: _widget_fills.py colour arithmetic over LockConfig, no tkinter import _surfaces_focus.py selects among existing surfaces, never mutates them The focus split keeps _surfaces.py's documented containment (it stays the only module that creates, moves or destroys windows), and the static guard in test_recovery_invariants.py globs _surfaces*.py, so the new sibling is covered with no list to extend. widgets.py re-exports the fills helpers, which keeps gatelock.widgets the single public surface its tests import. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019kMvSMtsVMB3d2uoZ56pbp
61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
# Copyright (c) 2026 Krzysztof Rudnicki
|
|
"""Tests for VT-switch disable/restore."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from unittest.mock import MagicMock, patch
|
|
|
|
from gatelock._vt import disable_vt_switching, restore_vt_switching
|
|
|
|
_SETXKBMAP = "/usr/bin/setxkbmap"
|
|
|
|
|
|
class TestDisableVtSwitching:
|
|
"""Tests for disable_vt_switching."""
|
|
|
|
def test_runs_setxkbmap_and_returns_true(
|
|
self, mock_subprocess_run: MagicMock
|
|
) -> None:
|
|
"""Disables VT switching and reports success when setxkbmap exists."""
|
|
result = disable_vt_switching()
|
|
|
|
assert result is True
|
|
mock_subprocess_run.assert_called_once_with(
|
|
[_SETXKBMAP, "-option", "srvrkeys:none"],
|
|
check=False,
|
|
)
|
|
|
|
def test_returns_false_when_setxkbmap_missing(self) -> None:
|
|
"""No subprocess call and returns False when setxkbmap is unavailable."""
|
|
with (
|
|
patch("gatelock._vt.shutil.which", return_value=None),
|
|
patch("gatelock._vt.subprocess.run") as mock_run,
|
|
):
|
|
result = disable_vt_switching()
|
|
|
|
assert result is False
|
|
mock_run.assert_not_called()
|
|
|
|
|
|
class TestRestoreVtSwitching:
|
|
"""Tests for restore_vt_switching."""
|
|
|
|
def test_runs_setxkbmap(self, mock_subprocess_run: MagicMock) -> None:
|
|
"""Restores VT switching when setxkbmap exists."""
|
|
restore_vt_switching()
|
|
|
|
mock_subprocess_run.assert_called_once_with(
|
|
[_SETXKBMAP, "-option", ""],
|
|
check=False,
|
|
)
|
|
|
|
def test_no_call_when_setxkbmap_missing(self) -> None:
|
|
"""No subprocess call when setxkbmap is unavailable."""
|
|
with (
|
|
patch("gatelock._vt.shutil.which", return_value=None),
|
|
patch("gatelock._vt.subprocess.run") as mock_run,
|
|
):
|
|
restore_vt_switching()
|
|
|
|
mock_run.assert_not_called()
|