tests/test_media_tool_import.py
Rama master · réplica de lectura del repositorio original.
import os
from pathlib import Path
import shutil
import subprocess
import tempfile
import unittest
ROOT = Path(__file__).resolve().parents[1]
PWSH = shutil.which("pwsh")
@unittest.skipUnless(os.name == "nt" and PWSH, "Windows PowerShell tool import")
class MediaToolImportTests(unittest.TestCase):
def test_imports_installed_tools_companion_dlls_and_preserves_existing_copy(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory).resolve()
data = root / "Peach data"
data.mkdir()
installed = root / "WinGet/Packages/Gyan.FFmpeg/version/bin"
installed.mkdir(parents=True)
for name in ("ffmpeg.exe", "ffprobe.exe", "avcodec.dll"):
(installed / name).write_bytes(b"MZ" + name.encode())
repair = root / "WinGet/Packages/untrunc"
repair.mkdir()
(repair / "untrunc.exe").write_bytes(b"MZrepair")
target = data / "tools/ffmpeg/bin"
target.mkdir(parents=True)
(target / "ffmpeg.exe").write_bytes(b"MZold")
result = subprocess.run([PWSH, "-NoProfile", "-File",
str(ROOT / "scripts/import_windows_media_tools.ps1"),
"-DataRoot", str(data), "-SearchRoots", str(root / "WinGet")],
capture_output=True, text=True, encoding="utf-8", timeout=30)
self.assertEqual(result.returncode, 0, result.stdout + result.stderr)
for name in ("ffmpeg.exe", "ffprobe.exe", "avcodec.dll"):
self.assertEqual((target / name).read_bytes(), (installed / name).read_bytes())
self.assertEqual((data / "tools/untrunc/untrunc.exe").read_bytes(), b"MZrepair")
backups = list((data / "tools").glob("import-backup-*/ffmpeg.exe"))
self.assertEqual(len(backups), 1)
self.assertEqual(backups[0].read_bytes(), b"MZold")
def test_missing_download_does_not_claim_ready_or_touch_other_data(self):
with tempfile.TemporaryDirectory() as directory:
root = Path(directory).resolve()
(root / "ledger.db").write_bytes(b"kept")
result = subprocess.run([PWSH, "-NoProfile", "-File",
str(ROOT / "scripts/import_windows_media_tools.ps1"),
"-DataRoot", str(root), "-SearchRoots", str(root)],
capture_output=True, text=True, encoding="utf-8", timeout=30)
self.assertEqual(result.returncode, 1, result.stdout + result.stderr)
self.assertIn("NOT FOUND", result.stdout)
self.assertEqual((root / "ledger.db").read_bytes(), b"kept")
self.assertFalse((root / "tools").exists())