65 lines
2.4 KiB
Python
65 lines
2.4 KiB
Python
"""Smoke for the Makefile wrapper: OUT defaults to IN, the baked-in FLAGS, and
|
|
the AUDIO_LANG knob (named to avoid the LANG locale env var)."""
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import tempfile
|
|
import unittest
|
|
from pathlib import Path
|
|
|
|
from tests import REPO_ROOT
|
|
|
|
|
|
def make(target, **vars):
|
|
args = ["make", target] + [f"{k}={v}" for k, v in vars.items()]
|
|
return subprocess.run(args, cwd=REPO_ROOT, capture_output=True, text=True,
|
|
env=dict(os.environ))
|
|
|
|
|
|
@unittest.skipUnless(shutil.which("make"), "make not installed")
|
|
class TestMakefile(unittest.TestCase):
|
|
def test_dry_out_defaults_to_in(self):
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
ind = Path(tmp) / "in"
|
|
ind.mkdir()
|
|
(ind / "x.mp4").touch()
|
|
r = make("dry", IN=str(ind))
|
|
self.assertEqual(r.returncode, 0, r.stderr)
|
|
self.assertIn(f"Output: {ind}", r.stdout)
|
|
self.assertIn("Found 1 video", r.stdout)
|
|
|
|
def test_batch_baked_in_flags(self):
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
ind = Path(tmp) / "in"
|
|
ind.mkdir()
|
|
(ind / "x.mp4").touch()
|
|
r = make("batch", IN=str(ind), PYTHON="echo")
|
|
self.assertEqual(r.returncode, 0, r.stderr)
|
|
line = next(l for l in r.stdout.splitlines() if "process_meeting.py" in l)
|
|
self.assertIn("--scene-threshold 10", line)
|
|
self.assertIn("--transcript-formats srt", line)
|
|
self.assertIn("--embed-images", line)
|
|
self.assertIn("--language en", line) # AUDIO_LANG defaults to en
|
|
|
|
def test_audio_lang_appends_language(self):
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
ind = Path(tmp) / "in"
|
|
ind.mkdir()
|
|
(ind / "x.mp4").touch()
|
|
r = make("batch", IN=str(ind), PYTHON="echo", AUDIO_LANG="es")
|
|
self.assertEqual(r.returncode, 0, r.stderr)
|
|
self.assertIn("--language es", r.stdout)
|
|
|
|
def test_out_format_forwarded(self):
|
|
with tempfile.TemporaryDirectory() as tmp:
|
|
ind = Path(tmp) / "in"
|
|
ind.mkdir()
|
|
(ind / "x.mp4").touch()
|
|
r = make("batch", IN=str(ind), PYTHON="echo", OUT_FORMAT="{name}.meetus")
|
|
self.assertEqual(r.returncode, 0, r.stderr)
|
|
self.assertIn("--out-format {name}.meetus", r.stdout)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|