116 lines · 3.0 KB · Python
RawDownload
from __future__ import annotations from pathlib import Path import pytestfrom click.testing import CliRunner from manim.__main__ import main  def _segment_directory(    media_dir: Path,    *,    module_name: str,    quality: str,    scene_name: str,) -> Path:    return (        media_dir        / "videos"        / module_name        / quality        / "partial_movie_files"        / scene_name    )  def test_cache_clear_resolves_each_scene_without_importing_file(tmp_path):    scene_file = tmp_path / "example.py"    scene_file.write_text("raise RuntimeError('must not be imported')\n")    media_dir = tmp_path / "media"     for scene_name in ("FirstScene", "SecondScene"):        directory = _segment_directory(            media_dir,            module_name="example",            quality="480p15",            scene_name=scene_name,        )        directory.mkdir(parents=True)        (directory / "segment.mp4").touch()     result = CliRunner().invoke(        main,        [            "cache",            "clear",            "--media-dir",            str(media_dir),            "-q",            "l",            str(scene_file),            "FirstScene",            "SecondScene",        ],        prog_name="manim",    )     assert result.exception is None, result.output    for scene_name in ("FirstScene", "SecondScene"):        directory = _segment_directory(            media_dir,            module_name="example",            quality="480p15",            scene_name=scene_name,        )        assert not (directory / "segment.mp4").exists()    assert "Removed 1 cached segment(s) for FirstScene" in result.output    assert "Removed 1 cached segment(s) for SecondScene" in result.output  @pytest.mark.parametrize("override_media_dir", [False, True])def test_cache_clear_applies_config_file_and_path_overrides(    tmp_path,    override_media_dir,):    scene_file = tmp_path / "configured_scene.py"    scene_file.touch()    configured_media_dir = tmp_path / "configured-media"    selected_media_dir = (        tmp_path / "overridden-media" if override_media_dir else configured_media_dir    )    config_file = tmp_path / "cache.cfg"    config_file.write_text(f"[CLI]\nmedia_dir = {configured_media_dir}\n")     directory = _segment_directory(        selected_media_dir,        module_name="configured_scene",        quality="360p12",        scene_name="ConfiguredScene",    )    directory.mkdir(parents=True)    segment = directory / "segment.mp4"    segment.touch()     options = ["--config-file", str(config_file)]    if override_media_dir:        options.extend(["--media-dir", str(selected_media_dir)])    result = CliRunner().invoke(        main,        [            "cache",            "clear",            *options,            "--resolution",            "640,360",            "--fps",            "12",            str(scene_file),            "ConfiguredScene",        ],        prog_name="manim",    )     assert result.exception is None, result.output    assert not segment.exists()