mirror of
https://github.com/jeertmans/manim-slides.git
synced 2025-05-20 03:57:38 +08:00

* test: re-add opencv-python * chore(dev): move to Rye instead of PDM * try fix * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: build backend * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: string quotes? * small fixes * upgrade typing * fix(ci): rye install on Windows * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix(ci): typos * fix * fix(ci): actually use right python version * fix(deps): manimgl * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix docs * another fix * cleanup * make sure to use trusted publisher * chore(docs): remove PDM --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
142 lines
3.9 KiB
Python
142 lines
3.9 KiB
Python
from collections.abc import Iterator
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
from click.testing import CliRunner
|
|
from qtpy.QtWidgets import QApplication
|
|
|
|
from manim_slides.present import present
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def auto_shutdown_qapp() -> Iterator[None]:
|
|
if app := QApplication.instance():
|
|
app.quit()
|
|
|
|
yield
|
|
|
|
if app := QApplication.instance():
|
|
app.quit()
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def args(slides_folder: Path) -> Iterator[tuple[str, ...]]:
|
|
yield ("--folder", str(slides_folder), "--skip-all", "--playback-rate", "25")
|
|
|
|
|
|
def test_present(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_unexisting_slide(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["UnexistingSlide", *args])
|
|
|
|
assert results.exit_code != 0
|
|
assert "UnexistingSlide.json does not exist" in results.stdout
|
|
|
|
|
|
def test_present_full_screen(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", "--fullscreen", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_hide_mouse(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", "--hide-mouse", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_ignore_aspect_ratio(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(
|
|
present, ["BasicSlide", "--aspect-ratio", "ignore", *args]
|
|
)
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_start_at(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", "--start-at", "-1,-1", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_start_at_invalid(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", "--start-at", "0,1234", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert "Could not set presentation index to 1234"
|
|
|
|
|
|
def test_present_start_at_scene_number(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(
|
|
present, ["BasicSlide", "BasicSlide", "--start-at-scene-number", "1", *args]
|
|
)
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_start_at_slide_number(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(
|
|
present, ["BasicSlide", "--start-at-slide-number", "1", *args]
|
|
)
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
def test_present_set_screen(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", "--screen", "0", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert results.stdout == ""
|
|
|
|
|
|
@pytest.mark.skip(reason="Fails when running the whole test suite.")
|
|
def test_present_set_invalid_screen(args: tuple[str, ...]) -> None:
|
|
runner = CliRunner()
|
|
|
|
with runner.isolated_filesystem():
|
|
results = runner.invoke(present, ["BasicSlide", "--screen", "999", *args])
|
|
|
|
assert results.exit_code == 0
|
|
assert "Invalid screen number 999" in results.stdout
|