Attempt to make auto at least somewhat more reliable. Recommend that device be explicitly set if possible.
This commit is contained in:
@@ -105,7 +105,7 @@ def test_litetalk_driver_writes_settings_and_cancel(serial_pair):
|
||||
speech_driver.shutdown()
|
||||
|
||||
|
||||
def test_auto_device_detection_includes_classic_serial(
|
||||
def test_configured_device_supports_classic_serial(
|
||||
monkeypatch, serial_pair
|
||||
):
|
||||
master_fd, slave_name = serial_pair
|
||||
@@ -120,11 +120,11 @@ def test_auto_device_detection_includes_classic_serial(
|
||||
fake_glob,
|
||||
)
|
||||
speech_driver = litetalkDriver.driver()
|
||||
speech_driver.initialize(build_environment("auto"))
|
||||
speech_driver.initialize(build_environment(slave_name))
|
||||
try:
|
||||
assert speech_driver.device == slave_name
|
||||
speech_driver.speak("Serial")
|
||||
assert read_available(master_fd, 9) == b"\x01ISerial\r"
|
||||
assert read_available(master_fd, 7) == b"Serial\r"
|
||||
finally:
|
||||
speech_driver.shutdown()
|
||||
|
||||
@@ -219,7 +219,7 @@ def test_auto_device_detection_prefers_probe_response(monkeypatch):
|
||||
speech_driver.shutdown()
|
||||
|
||||
|
||||
def test_auto_device_detection_falls_back_without_probe_response(
|
||||
def test_auto_device_detection_fails_without_probe_response(
|
||||
monkeypatch
|
||||
):
|
||||
opened_ports = []
|
||||
@@ -265,13 +265,12 @@ def test_auto_device_detection_falls_back_without_probe_response(
|
||||
)
|
||||
|
||||
speech_driver = litetalkDriver.driver()
|
||||
speech_driver.initialize(build_environment("auto"))
|
||||
try:
|
||||
assert opened_ports == ["/dev/ttyUSB0", "/dev/ttyUSB1"]
|
||||
assert closed_ports == [2]
|
||||
assert speech_driver.device == "/dev/ttyUSB0"
|
||||
finally:
|
||||
speech_driver.shutdown()
|
||||
with pytest.raises(RuntimeError, match="hardware speech device"):
|
||||
speech_driver.initialize(build_environment("auto"))
|
||||
|
||||
assert opened_ports == ["/dev/ttyUSB0", "/dev/ttyUSB1"]
|
||||
assert closed_ports == [1, 2]
|
||||
assert speech_driver.device == "auto"
|
||||
|
||||
|
||||
def test_auto_device_detection_skips_termios_failures(monkeypatch):
|
||||
@@ -280,10 +279,8 @@ def test_auto_device_detection_skips_termios_failures(monkeypatch):
|
||||
|
||||
monkeypatch.setattr(
|
||||
"fenrirscreenreader.speechDriver.hardwareSerialDriver.glob.glob",
|
||||
lambda pattern: ["/dev/ttyUSB0"]
|
||||
lambda pattern: ["/dev/ttyUSB0", "/dev/ttyUSB1"]
|
||||
if pattern == "/dev/ttyUSB*"
|
||||
else ["/dev/ttyS0"]
|
||||
if pattern == "/dev/ttyS*"
|
||||
else [],
|
||||
)
|
||||
|
||||
@@ -293,7 +290,7 @@ def test_auto_device_detection_skips_termios_failures(monkeypatch):
|
||||
return port
|
||||
|
||||
def fake_tcgetattr(port):
|
||||
if port == 101:
|
||||
if port == 100:
|
||||
raise termios.error(5, "Input/output error")
|
||||
return [0, 0, 0, 0, 0, 0, [0] * 32]
|
||||
|
||||
@@ -331,12 +328,12 @@ def test_auto_device_detection_skips_termios_failures(monkeypatch):
|
||||
)
|
||||
|
||||
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()
|
||||
with pytest.raises(RuntimeError, match="hardware speech device"):
|
||||
speech_driver.initialize(build_environment("auto"))
|
||||
|
||||
assert opened_ports == [("/dev/ttyUSB0", 100), ("/dev/ttyUSB1", 101)]
|
||||
assert closed_ports == [100, 101]
|
||||
assert speech_driver.device == "auto"
|
||||
|
||||
|
||||
def test_auto_device_detection_fails_when_no_serial_device(monkeypatch):
|
||||
|
||||
Reference in New Issue
Block a user