Note: This page is generated from the
slicecore/splitframeengine repository. Edit the source document there and let automation sync it intosplitframe-io.
Unit Tests
pytest -q
The unit test suite now includes:
- runtime profile policy coverage
- cooked-content bundle loading and hash validation
- cook-pipeline deterministic no-op and dependency-rebuild coverage
- headless cooked gameplay-content integration coverage across strings, themes, biome metadata, and particle presets
- script plugin lifecycle and failure propagation
- headless engine startup, scene lifecycle, resize, and quit integration
- native tooling smoke and artifact-manifest coverage
- engine-owned native startup-manifest coverage
- engine-owned native startup override precedence coverage
- headless
examples/simple_gamescene-flow coverage on a cook-pipeline-generated runtime manifest
Content Validation
python scripts/maturity/content_validate.py --root data --strict
Native Smoke
python scripts/native/native_backend_smoke.py --allow-missing-extension --json
The supported host-path proof is the GameEngine lane:
python scripts/native/native_game_engine_runtime_smoke.py --allow-missing-extension --json
python scripts/native/native_simple_game_smoke.py --allow-missing-extension --json
Lower-level native facade and backend-selection smokes remain important, but
they are contract coverage underneath the preferred GameEngine startup flow.
To validate a compiled native module instead of only the facade contract, use two distinct build lanes rather than treating every compiled module as equivalent.
Low-level facade/runtime contract lane:
cmake -S native -B native/build-ci-smoke-lowlevel \
-DCMAKE_BUILD_TYPE=Release \
-DSPLITFRAME_NATIVE_ENABLE_IMGUI=OFF \
-DSPLITFRAME_NATIVE_USE_GLFW=OFF \
-DSPLITFRAME_NATIVE_USE_VULKAN_BOOTSTRAP=OFF
cmake --build native/build-ci-smoke-lowlevel --config Release -j2
python scripts/native/native_backend_smoke.py --module-dir native/build-ci-smoke-lowlevel --json
python scripts/native/native_renderer_runtime_smoke.py --module-dir native/build-ci-smoke-lowlevel --json
python scripts/native/native_runtime_env_alias_smoke.py --module-dir native/build-ci-smoke-lowlevel --json
python scripts/native/native_feature_tier_smoke.py --module-dir native/build-ci-smoke-lowlevel --json
python scripts/native/native_renderer_config_smoke.py --module-dir native/build-ci-smoke-lowlevel --json
python scripts/native/native_renderer_submission_smoke.py --module-dir native/build-ci-smoke-lowlevel --json
Host-path GameEngine / RenderContext lane:
cmake -S native -B native/build-ci-smoke-host \
-DCMAKE_BUILD_TYPE=Release \
-DSPLITFRAME_NATIVE_ENABLE_IMGUI=ON \
-DSPLITFRAME_NATIVE_USE_GLFW=ON \
-DSPLITFRAME_NATIVE_USE_VULKAN_BOOTSTRAP=ON
cmake --build native/build-ci-smoke-host --config Release -j2
python scripts/native/native_engine_bridge_smoke.py --module-dir native/build-ci-smoke-host --json
python scripts/native/native_game_engine_runtime_smoke.py --module-dir native/build-ci-smoke-host --json
python scripts/native/native_simple_game_smoke.py --module-dir native/build-ci-smoke-host --json
On headless Linux, wrap the host-path smoke commands with xvfb-run -a so the
bootstrap-capable native frontend has a display server to bind against.
Boundary Audit
bash scripts/audit_splitframe_boundaries.sh .
Import Smoke
python -c "import splitframe, splitframe_api, splitframe_native_renderer"