Ctrl K
ComunidadGuías…

tests/test_media_tool_import.py

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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())