Context / Problem Statement
tests/smoke/run_smoke.py is excellent but exercises only ~6 hand-picked headline behaviors and blender-smoke.yml runs 4 examples. The 17 snippets and 12 skills are largely un-run in real Blender, and there is no record of what is covered. A new snippet can ship having only passed py_compile, and coverage can erode invisibly (silent-truncation risk).
Proposed Solution / Implementation Steps
- Add
tests/smoke/run_snippets.py: iterate snippets/*.py, exec each inside a reset() factory-empty scene in headless Blender, treating any raised exception as failure (mirror the try/except wrapper already in run_smoke.py).
- Support a
# smoke: skip <reason> first-line pragma for snippets that need scene state they can't self-provide; print the skipped list so skips are visible, never silent.
- Emit a coverage table at the end:
N snippets run, M skipped (reasons), K skills with a smoke check. Print it to the CI log.
- Wire a new step into
blender-smoke.yml after the existing smoke driver, on the same 5.1/4.5 matrix, xvfb-run-wrapped.
Definition of Done
Filed from the repository technical audit — see docs/technical-audit.md.
Context / Problem Statement
tests/smoke/run_smoke.pyis excellent but exercises only ~6 hand-picked headline behaviors andblender-smoke.ymlruns 4 examples. The 17 snippets and 12 skills are largely un-run in real Blender, and there is no record of what is covered. A new snippet can ship having only passedpy_compile, and coverage can erode invisibly (silent-truncation risk).Proposed Solution / Implementation Steps
tests/smoke/run_snippets.py: iteratesnippets/*.py,execeach inside areset()factory-empty scene in headless Blender, treating any raised exception as failure (mirror the try/except wrapper already inrun_smoke.py).# smoke: skip <reason>first-line pragma for snippets that need scene state they can't self-provide; print the skipped list so skips are visible, never silent.N snippets run, M skipped (reasons), K skills with a smoke check. Print it to the CI log.blender-smoke.ymlafter the existing smoke driver, on the same 5.1/4.5 matrix,xvfb-run-wrapped.Definition of Done
# smoke: skip-ged with a reason.Filed from the repository technical audit — see
docs/technical-audit.md.