Parse the settings correctly lol.

This commit is contained in:
Storm Dragon
2026-05-23 17:57:02 -04:00
parent 089850ac18
commit 6e3d7fee94
2 changed files with 88 additions and 3 deletions
@@ -1,5 +1,6 @@
import os
import select
import termios
import time
from unittest.mock import ANY
from unittest.mock import Mock
@@ -128,6 +129,19 @@ def test_auto_device_detection_includes_classic_serial(
speech_driver.shutdown()
def test_configured_device_strips_inline_comment(serial_pair):
master_fd, slave_name = serial_pair
device_setting = f"{slave_name} # built-in serial port"
speech_driver = litetalkDriver.driver()
speech_driver.initialize(build_environment(device_setting))
try:
assert speech_driver.device == slave_name
speech_driver.speak("Specific")
assert read_available(master_fd, 9) == b"Specific\r"
finally:
speech_driver.shutdown()
def test_auto_device_detection_prefers_probe_response(monkeypatch):
opened_ports = []
closed_ports = []
@@ -260,6 +274,71 @@ def test_auto_device_detection_falls_back_without_probe_response(
speech_driver.shutdown()
def test_auto_device_detection_skips_termios_failures(monkeypatch):
opened_ports = []
closed_ports = []
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.glob.glob",
lambda pattern: ["/dev/ttyUSB0"]
if pattern == "/dev/ttyUSB*"
else ["/dev/ttyS0"]
if pattern == "/dev/ttyS*"
else [],
)
def fake_open(device, flags):
port = 100 + len(opened_ports)
opened_ports.append((device, port))
return port
def fake_tcgetattr(port):
if port == 101:
raise termios.error(5, "Input/output error")
return [0, 0, 0, 0, 0, 0, [0] * 32]
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.os.open",
fake_open,
)
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.os.close",
lambda port: closed_ports.append(port),
)
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.os.write",
lambda port, data: len(data),
)
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.select.select",
lambda readable, writable, exceptional, timeout: (
[],
writable,
exceptional,
),
)
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.termios.tcgetattr",
fake_tcgetattr,
)
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.termios.tcsetattr",
lambda port, when, attrs: None,
)
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.tty.setraw",
lambda port: None,
)
speech_driver = litetalkDriver.driver()
speech_driver.initialize(build_environment("auto"))
try:
assert opened_ports == [("/dev/ttyUSB0", 100), ("/dev/ttyS0", 101)]
assert speech_driver.device == "/dev/ttyUSB0"
finally:
speech_driver.shutdown()
def test_auto_device_detection_fails_when_no_serial_device(monkeypatch):
monkeypatch.setattr(
"fenrirscreenreader.speechDriver.hardwareSerialDriver.glob.glob",