test: lock speechbrain lengths and identity camera filter

Filter --cameras 1,5 by cam-NN identity instead of discovery index.
This commit is contained in:
Hermes
2026-08-28 05:15:49 +00:00
parent dc46cbef04
commit 628307ff12
7 changed files with 107 additions and 7 deletions
+49
View File
@@ -0,0 +1,49 @@
import re
from discovery import Camera, discover_cameras, select_cameras
CARD_RE = re.compile(r"\s*(\d+)\s+\[([A-Za-z0-9_]+)\s*\]:\s*(.*)")
def test_padded_c920_card_line_matches():
line = " 2 [C920 ]: USB-Audio - HD Pro Webcam C920"
m = CARD_RE.match(line)
assert m is not None
assert int(m.group(1)) == 2
assert m.group(2) == "C920"
def test_naive_word_regex_misses_padding():
line = " 2 [C920 ]: USB-Audio - HD Pro Webcam C920"
assert re.match(r"\s*(\d+)\s+\[(\w+)\]:", line) is None
def test_live_discover_present_cameras():
cams = discover_cameras()
assert len(cams) >= 1
assert all(c.audio_card is not None for c in cams)
assert all(c.serial for c in cams)
assert all(re.match(r"cam-\d{2}$", c.identity) for c in cams)
ids = [c.identity for c in cams]
assert ids == sorted(ids)
def test_select_cameras_by_identity_not_index():
cams = [
Camera(index=0, identity="cam-01", video_device="/dev/cam01",
audio_card=2, serial="A"),
Camera(index=1, identity="cam-05", video_device="/dev/cam05",
audio_card=6, serial="B"),
Camera(index=2, identity="cam-20", video_device="/dev/cam20",
audio_card=21, serial="C"),
]
out = select_cameras(cams, ["1", "5"])
assert [c.identity for c in out] == ["cam-01", "cam-05"]
def test_select_cameras_all():
cams = [
Camera(index=0, identity="cam-01", video_device="/dev/cam01",
audio_card=2, serial="A"),
]
assert select_cameras(cams, ["all"]) == cams