"""Tests for transcript output sinks.""" import json from stt_daemon.output import TranscriptSink from stt_daemon.transcriber import TranscriptResult def _result(text="hello world"): return TranscriptResult(language="en", language_probability=0.98, text=text) def test_jsonl_includes_level_and_reason(tmp_path): sink = TranscriptSink(stdout=False, jsonl_dir=str(tmp_path)) sink.emit(_result(), 2.5, rms=0.041234, reason="pause") files = list(tmp_path.glob("*.jsonl")) assert len(files) == 1 record = json.loads(files[0].read_text().splitlines()[0]) assert record["rms"] == round(0.041234, 5) assert record["end_reason"] == "pause" assert record["duration_s"] == 2.5 assert record["text"] == "hello world" assert record["lang"] == "en" def test_stdout_includes_level_and_reason(capsys): sink = TranscriptSink(stdout=True, jsonl_dir=None) sink.emit(_result(), 1.0, rms=0.02, reason="end_of_turn") out = capsys.readouterr().out assert "rms=0.020" in out assert "end_of_turn" in out assert "hello world" in out def test_empty_text_is_skipped(tmp_path, capsys): sink = TranscriptSink(stdout=True, jsonl_dir=str(tmp_path)) sink.emit(_result(text=""), 1.0, rms=0.02, reason="pause") assert capsys.readouterr().out == "" assert list(tmp_path.glob("*.jsonl")) == []