"""Tests for the class-level TTS .ogg container repair. Root cause class (#57048, #54589, #57213, #58845, #14841, #45557, #57049): several TTS backends silently write MP3/WAV bytes into a ``.ogg`` output path (Edge only emits MP3; Piper writes WAV; xAI writes MP3; some OpenAI-compatible servers ignore ``response_format="opus"``). Platforms that require real Ogg/Opus for native voice bubbles (Telegram, Matrix, Feishu, WhatsApp, Signal) then render a broken 0-second bubble. Instead of per-provider fixes, ``text_to_speech_tool`` sniffs the magic bytes once after synthesis and repairs the container centrally. """ import struct from unittest.mock import patch import pytest from tools.tts_tool import ( OPUS_VOICE_PLATFORMS, _repair_ogg_container, _sniff_audio_container, ) MP3_ID3 = b"ID3\x04\x00\x00\x00\x00\x00\x00" + b"\x00" * 64 MP3_FRAME = b"\xff\xfb\x90\x00" + b"\x00" * 64 OGG = b"OggS\x00\x02" + b"\x00" * 64 FLAC = b"fLaC" + b"\x00" * 64 def _wav_bytes() -> bytes: return b"RIFF" + struct.pack("