Spaces:
Running on Zero
Running on Zero
File size: 1,907 Bytes
b260242 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | """L2 tests for post-processing — Demucs and ffmpeg are mocked."""
from __future__ import annotations
from pathlib import Path
from unittest.mock import MagicMock
import post_process as pp
def test_separate_stems_returns_four_paths(tmp_path, monkeypatch):
src = tmp_path / "song.wav"
src.write_bytes(b"RIFF" + b"\0" * 100)
fake_sep = MagicMock()
fake_sep.separate_audio_file.return_value = {
"vocals": tmp_path / "vocals.wav",
"drums": tmp_path / "drums.wav",
"bass": tmp_path / "bass.wav",
"other": tmp_path / "other.wav",
}
for k in ("vocals", "drums", "bass", "other"):
(tmp_path / f"{k}.wav").write_bytes(b"RIFF" + b"\0" * 100)
monkeypatch.setattr(pp, "_get_demucs", lambda: fake_sep)
stems = pp.separate_stems(src)
assert set(stems.keys()) == {"vocals", "drums", "bass", "other"}
for p in stems.values():
assert Path(p).exists()
def test_normalise_lufs_invokes_pyloudnorm(monkeypatch, tmp_path):
src = tmp_path / "in.wav"
src.write_bytes(b"RIFF" + b"\0" * 100)
captured = {}
def fake_norm(in_path, out_path, target_lufs):
captured.update({"in": in_path, "out": out_path, "target": target_lufs})
Path(out_path).write_bytes(b"RIFF")
monkeypatch.setattr(pp, "_pyloudnorm_normalise", fake_norm)
out = pp.normalise_lufs(src, target_lufs=-14.0)
assert captured["target"] == -14.0
assert Path(out).exists()
def test_to_mp3_invokes_ffmpeg(monkeypatch, tmp_path):
src = tmp_path / "in.wav"
src.write_bytes(b"RIFF")
captured = {}
def fake_run(cmd, **kw):
captured["cmd"] = cmd
Path(cmd[-1]).write_bytes(b"ID3")
return MagicMock(returncode=0)
monkeypatch.setattr(pp.subprocess, "run", fake_run)
out = pp.to_mp3(src, bitrate_kbps=320)
assert Path(out).exists()
assert "320k" in " ".join(captured["cmd"])
|