Les tests
Phosphoneo est surtout un oracle : ses tests sont sa raison d’être. Voici ce qu’ils prouvent, et comment les relancer.
Quatre sortes de preuves
| Preuve | Commande | Ce qu’elle établit |
|---|---|---|
| Oracle du processeur | make test-oracle | 2 540 000 cas, 100 % exigé |
| Captures de référence | make test-golden | l’image et la console de chaque cas gardent la même empreinte |
| Différentiel | make test-diff | images identiques pixel pour pixel à l’émulateur officiel (cas communs) |
| Co-simulation | make test-cosim | le vrai firmware ARM donne le même résultat |
Autour d’elles, une trentaine de scripts d’intégration vérifient chaque option : test-break, test-symbols, test-pokes, test-savestate, test-record, test-loadat, test-gdb, test-tui, test-sdl, test-wasm… make test les enchaîne.
Les captures de référence
Chaque cas (tests/golden/cases/*.case) dit quel programme lancer, à quel cycle photographier, et éventuellement quelles touches taper. tools/golden.sh run rejoue tout et compare aux empreintes SHA-256 du manifeste. Règle : une capture ne se re-référence jamais pour faire passer un test, seulement après avoir été regardée (golden.sh show NOM la convertit en PNG).
Les lignes de version (bannière du firmware, NeoDOS version …, réponse de VER) sont masquées dans les empreintes : changer de version de firmware ne casse pas tous les cas, seuls les vrais changements se voient.
Réutiliser le script dans un autre projet
tools/golden.sh est écrit pour servir à n’importe quel dépôt : on lui donne un dossier de cas et un manifeste. C’est ce que font les portages du collectif (AsteroNeo, Wolfenstein 3D) pour leurs propres tests.