Files
DJ_Teaser_Clipper/testing/test_sanity.py
Thomas 2b81d5843a nwe files
some files
2026-01-29 10:51:19 +01:00

79 lines
2.5 KiB
Python

import json
import shutil
import subprocess
import sys
from pathlib import Path
import pytest
def test_ffmpeg_exists_or_skip():
if shutil.which("ffmpeg") is None:
pytest.skip("ffmpeg not found in PATH (required for rendering).")
p = subprocess.run(["ffmpeg", "-version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
assert p.returncode == 0
def test_selection_parsing_logic():
# Minimal expectation for selection parsing behavior
def parse(selection: str, n: int):
s = selection.strip().lower()
if s in {"all", "auto"}:
return list(range(n))
out = []
for part in [p.strip() for p in s.split(",") if p.strip()]:
if "-" in part:
a, b = part.split("-", 1)
a_i = int(a) - 1
b_i = int(b) - 1
if a_i > b_i:
a_i, b_i = b_i, a_i
out.extend(list(range(a_i, b_i + 1)))
else:
out.append(int(part) - 1)
# unique + clamp
seen = set()
filtered = []
for i in out:
if 0 <= i < n and i not in seen:
seen.add(i)
filtered.append(i)
return filtered
assert parse("all", 5) == [0, 1, 2, 3, 4]
assert parse("auto", 3) == [0, 1, 2]
assert parse("1,3,5", 5) == [0, 2, 4]
assert parse("1-3", 10) == [0, 1, 2]
assert parse("3-1", 10) == [0, 1, 2]
assert parse("1-2,2-3", 10) == [0, 1, 2]
def test_example_report_schema_if_present():
# If the example JSON exists in repo root, validate basic schema.
root = Path(".").resolve()
ex = root / "example_teaser_report.json"
if not ex.exists():
pytest.skip("example_teaser_report.json not present in this environment.")
data = json.loads(ex.read_text(encoding="utf-8"))
assert "version" in data
assert "settings" in data
assert "tracks" in data
assert isinstance(data["tracks"], list)
if data["tracks"]:
t0 = data["tracks"][0]
assert "filename" in t0
if data.get("version") == "v3":
assert "camelot" in t0
def test_cli_wrapper_help_runs():
# Ensure autoclip.py exists and prints help without crashing.
root = Path(".").resolve()
cli = root / "autoclip.py"
if not cli.exists():
pytest.skip("autoclip.py not present in this environment.")
p = subprocess.run([sys.executable, str(cli), "--help"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
assert p.returncode == 0
assert "Auto Clip" in (p.stdout + p.stderr)