41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
import shutil
|
|
import subprocess
|
|
|
|
import pytest
|
|
|
|
from app.remux import remux_to_mp4
|
|
|
|
needs_ffmpeg = pytest.mark.skipif(shutil.which("ffmpeg") is None, reason="ffmpeg not installed")
|
|
|
|
|
|
def make_mkv(path):
|
|
subprocess.run(
|
|
["ffmpeg", "-v", "error", "-y",
|
|
"-f", "lavfi", "-i", "testsrc=size=320x240:rate=30",
|
|
"-f", "lavfi", "-i", "sine=frequency=440",
|
|
"-t", "1", "-c:v", "libx264", "-c:a", "aac", str(path)],
|
|
check=True,
|
|
)
|
|
|
|
|
|
@needs_ffmpeg
|
|
def test_remux_good_mkv(tmp_path):
|
|
src, dst = tmp_path / "in.mkv", tmp_path / "out.mp4"
|
|
make_mkv(src)
|
|
assert remux_to_mp4(src, dst) is True
|
|
assert dst.read_bytes()[4:8] == b"ftyp"
|
|
|
|
|
|
def test_remux_garbage_returns_false(tmp_path):
|
|
src, dst = tmp_path / "in.mkv", tmp_path / "out.mp4"
|
|
src.write_bytes(b"not a video at all")
|
|
assert remux_to_mp4(src, dst) is False
|
|
assert not dst.exists()
|
|
|
|
|
|
def test_remux_missing_ffmpeg_returns_false(tmp_path, monkeypatch):
|
|
monkeypatch.setenv("PATH", "")
|
|
src, dst = tmp_path / "in.mkv", tmp_path / "out.mp4"
|
|
src.write_bytes(b"x")
|
|
assert remux_to_mp4(src, dst) is False
|