Building from source
Test suites
The host tests, the desktop Ren'Py integration tests, and the hardware checklist.
On this page
Tests on a computer prove the code; they prove nothing about the Switch. Results from the console are recorded separately, run by run.
Host tests
scripts/test.shNo Docker needed for most of it: Apple clang or gcc, and the macOS system Python.
| Suite | What it covers | Result |
|---|---|---|
| Input and filesystem (C, ASan + UBSan) | Presets and Nintendo A/B orientation; the npad normaliser; bind, conflict and completeness; press, hold and repeat timing including stalls; deadzone, cursor movement and acceleration; the emergency combo; reset after resume; stick and letterbox maths; JSON round trip plus 11 hostile inputs; the shipped profiles; atomic save with torn-write and missing-file fallback | 151/151 |
Loader screens (tests/ui/mockups.c) | Renders every screen; fails if a settled screen keeps redrawing, or a tap misses its target | part of the run |
Importer (tests/unit/test_importer.py) | The importer, with the macOS system Python; Windows behaviour with Windows faked | 25/25 |
| Python side (needs Docker and the host CPython) | runtime/python/selftest.py against the packed stdlib (66 required checks); test_horizon_paths.py (31 checks) | pass, host only |
The importer’s window tests drive its Api class without a window, so they need no pywebview:
/usr/bin/python3 -m unittest tests/unit/test_importer.py tests/unit/test_importer_gui.pyDesktop Ren’Py integration
tests/integration/renpy_desktop/run.shRuns the official Ren’Py 8.5.3 SDK headless (Xvfb, Mesa llvmpipe, GLES 3.2), started through rpynx’s boot script and bridge, with a scripted controller. It plays The Question with every default control: cursor click, dialogue, rollback and forward, hide UI, history, game menu, quick menu, auto, hold-skip, a D-pad menu choice, B in game, save to the per-game folder, and the emergency notice. 26 checks.
tests/integration/renpy_desktop/compat.shSynthetic games for the fixes some games need, with plain-8.5.3 repros and an emulated Switch keyboard: overlapping buttons (stacked), the link notice (links), Ren’Py 7 gui values across a language change, and more. 14 checks.
This verifies the Python boot code and the bridge against the real engine. It runs no Switch code.
Hardware checklist
docs/HARDWARE_TESTS.md in the rpynx repo lists tests H1–H35, from a cold launch to the emergency combo in a game. Each run is recorded in tests/hardware/results/<date>-<run>.md with the console model and firmware, the loader version, the launch mode, expected and actual results, and the matching log lines. Emulator runs never count as hardware verification.
See Statuses and test runs for what has passed.