Files
odysseus/tests/test_inspect_media_truncated_tail.py
T

48 lines
1.4 KiB
Python

"""Regression coverage for partially downloaded/truncated video containers."""
import asyncio
import json
from pathlib import Path
import shutil
import subprocess
import pytest
from src.agent_tools.media_tools import InspectMediaTool
from src.tool_execution import _active_workspace
@pytest.mark.skipif(
not shutil.which("ffmpeg") or not shutil.which("ffprobe"),
reason="ffmpeg required",
)
def test_inspect_media_recovers_to_a_decodable_frame_before_a_truncated_tail(
tmp_path: Path,
):
complete = tmp_path / "complete.webm"
truncated = tmp_path / "truncated.webm"
subprocess.run(
[
"ffmpeg", "-hide_banner", "-loglevel", "error", "-f", "lavfi",
"-i", "testsrc2=size=320x180:rate=4:duration=8",
"-c:v", "libvpx-vp9", "-g", "4", "-pix_fmt", "yuv420p",
"-y", str(complete),
],
check=True,
)
payload = complete.read_bytes()
truncated.write_bytes(payload[: int(len(payload) * 0.70)])
token = _active_workspace.set(str(tmp_path))
try:
result = asyncio.run(InspectMediaTool().execute(json.dumps({
"path": "/workspace/truncated.webm",
"timestamp": 7.9,
}), {}))
finally:
_active_workspace.reset(token)
assert result["exit_code"] == 0, result
assert result["frame_timestamps"][0] < 7.0
assert "Recovered a decodable frame before the requested timestamp" in result["output"]