speculative fixes for hardware speech.

This commit is contained in:
Storm Dragon
2026-05-23 17:10:46 -04:00
parent d853e1b24d
commit d4b2fec1db
3 changed files with 57 additions and 4 deletions
@@ -1,6 +1,7 @@
import os
import select
import time
from unittest.mock import ANY
from unittest.mock import Mock
import pytest
@@ -103,6 +104,48 @@ def test_litetalk_driver_writes_settings_and_cancel(serial_pair):
speech_driver.shutdown()
def test_auto_device_detection_includes_classic_serial(
monkeypatch, serial_pair
):
master_fd, slave_name = serial_pair
def fake_glob(pattern):
if pattern == "/dev/ttyS*":
return [slave_name]
return []
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.glob.glob",
fake_glob,
)
speech_driver = litetalkDriver.driver()
speech_driver.initialize(build_environment("auto"))
try:
assert speech_driver.device == slave_name
speech_driver.speak("Serial")
assert read_available(master_fd, 7) == b"Serial\r"
finally:
speech_driver.shutdown()
def test_auto_device_detection_fails_when_no_serial_device(monkeypatch):
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.glob.glob",
lambda pattern: [],
)
speech_driver = litetalkDriver.driver()
with pytest.raises(RuntimeError, match="hardware speech device"):
speech_driver.initialize(build_environment("auto"))
debug_manager = speech_driver.env["runtime"]["DebugManager"]
debug_manager.write_debug_out.assert_called_with(
"Hardware speech device not found",
ANY,
on_any_level=True,
)
@pytest.mark.parametrize("driver_class", [doubletalkDriver, tripletalkDriver])
def test_litetalk_compatible_alias_drivers(driver_class, serial_pair):
speech_driver, master_fd = initialized_driver(driver_class, serial_pair)