Skip to content

Commit 04b0eb5

Browse files
authored
feat(lib): propagate manim render exit code (#545)
* feat: propagate `manim render` exit code * changelog * test * fix typo
1 parent 0c6cd67 commit 04b0eb5

File tree

4 files changed

+45
-2
lines changed

4 files changed

+45
-2
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
(unreleased)=
1111
## [Unreleased](https://github.com/jeertmans/manim-slides/compare/v5.5.1...HEAD)
1212

13+
(unreleased-added)=
14+
### Added
15+
16+
- `manim-slides render` now exits with the same return code as the one returned by `manim render` or `manimgl`.
17+
[@chrjabs](https://github.com/chrjabs) [#545](https://github.com/jeertmans/manim-slides/pull/545)
18+
1319
(unreleased-chore)=
1420
### Chore
1521

manim_slides/render.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def render(ce: bool, gl: bool, args: tuple[str, ...]) -> None:
4848
if ce and gl:
4949
raise click.UsageError("You cannot specify both --CE and --GL renderers.")
5050
if gl:
51-
subprocess.run([sys.executable, "-m", "manimlib", "-w", *args])
51+
completed = subprocess.run([sys.executable, "-m", "manimlib", "-w", *args])
5252
else:
53-
subprocess.run([sys.executable, "-m", "manim", "render", *args])
53+
completed = subprocess.run([sys.executable, "-m", "manim", "render", *args])
54+
sys.exit(completed.returncode)

tests/data/slides.py

+5
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,8 @@ def construct(self):
4242

4343
class BasicSlideSkipReversing(BasicSlide):
4444
skip_reversing = True
45+
46+
47+
class FailingSlide(Slide):
48+
def construct(self):
49+
self.play("this fails to render")

tests/test_slide.py

+31
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,37 @@ def test_render_basic_slide(
113113
assert local_presentation_config.resolution == presentation_config.resolution
114114

115115

116+
@pytest.mark.parametrize(
117+
"renderer",
118+
[
119+
"--CE",
120+
pytest.param(
121+
"--GL",
122+
marks=pytest.mark.skipif(
123+
sys.version_info < (3, 10),
124+
reason="See https://github.com/3b1b/manim/issues/2263.",
125+
),
126+
),
127+
"--CE --renderer=opengl",
128+
],
129+
ids=("CE", "GL", "CE(GL)"),
130+
)
131+
def test_render_failing_slide(
132+
renderer: str,
133+
slides_file: Path,
134+
manimgl_config: Path,
135+
) -> None:
136+
runner = CliRunner()
137+
138+
with runner.isolated_filesystem() as tmp_dir:
139+
shutil.copy(manimgl_config, tmp_dir)
140+
results = runner.invoke(
141+
render, [*renderer.split(" "), str(slides_file), "FailingSlide", "-ql"]
142+
)
143+
144+
assert results.exit_code != 0, results
145+
146+
116147
def test_clear_cache(
117148
slides_file: Path,
118149
) -> None:

0 commit comments

Comments
 (0)