Improve clipboard workflow and logging

This commit is contained in:
Hermes Agent
2026-09-11 13:24:39 +02:00
parent e779bd3423
commit 9320217e0f
7 changed files with 117 additions and 45 deletions
+16
View File
@@ -0,0 +1,16 @@
from ai_typewriter.clipboard_capture import capture_clipboard, capture_selection
def test_capture_clipboard_reads_current_clipboard(monkeypatch):
monkeypatch.setattr("ai_typewriter.clipboard_capture.pyperclip.paste", lambda: "phrase copiée")
assert capture_clipboard() == "phrase copiée"
def test_legacy_capture_selection_does_not_copy_or_modify_clipboard(monkeypatch):
calls = []
monkeypatch.setattr("ai_typewriter.clipboard_capture.pyperclip.paste", lambda: "déjà copié")
monkeypatch.setattr("ai_typewriter.clipboard_capture.pyperclip.copy", lambda value: calls.append(value), raising=False)
assert capture_selection() == "déjà copié"
assert calls == []
+49
View File
@@ -0,0 +1,49 @@
from types import SimpleNamespace
from ai_typewriter.key_stepper import KeyStepper
def test_start_types_first_character_immediately_then_hooks_remaining(monkeypatch):
typed = []
hooked = []
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.write", lambda char, delay=0, exact=True: typed.append(char))
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.hook", lambda callback, suppress=True: hooked.append((callback, suppress)) or "hook")
stepper = KeyStepper("abc")
stepper.start()
assert typed == ["a"]
assert hooked and hooked[0][1] is True
assert stepper.remaining_characters == 2
def test_single_character_response_does_not_install_hook(monkeypatch):
typed = []
hooks = []
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.write", lambda char, delay=0, exact=True: typed.append(char))
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.hook", lambda callback, suppress=True: hooks.append(callback))
stepper = KeyStepper("x")
stepper.start()
assert typed == ["x"]
assert hooks == []
assert stepper.remaining_characters == 0
def test_key_down_types_next_character_after_auto_first(monkeypatch):
typed = []
hook = {}
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.write", lambda char, delay=0, exact=True: typed.append(char))
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.hook", lambda callback, suppress=True: hook.setdefault("callback", callback) or "hook")
monkeypatch.setattr("ai_typewriter.key_stepper.keyboard.unhook", lambda value: None)
stepper = KeyStepper("ab")
stepper.start()
hook["callback"](SimpleNamespace(event_type="down"))
assert typed == ["a", "b"]
assert stepper.remaining_characters == 0