# tests/test_musicgen_service.py — unit tests for MusicGenClient mock mode from __future__ import annotations import os import pytest # Ensure mock mode os.environ["CF_MUSICGEN_MOCK"] = "1" @pytest.mark.asyncio async def test_mock_generate_copies_file(tmp_path): from app.services.musicgen import MusicGenClient source = tmp_path / "source.wav" source.write_bytes(b"RIFF" + b"\x00" * 40) output = str(tmp_path / "output.wav") client = MusicGenClient() duration = await client.generate( source_audio_path=str(source), output_path=output, prompt="test", duration_s=10.0, cfg_coef=3.0, prompt_duration_s=5.0, ) assert os.path.exists(output) assert duration >= 0.0 # torchaudio may not parse our fake WAV; 0.0 is fine def test_make_output_path(): from app.services.musicgen import make_output_path path = make_output_path("data", "chain-abc", "node-xyz") assert path == "data/chains/chain-abc/nodes/node-xyz.wav"