Files
TerminalBasic/tests/compat/README.md

4.2 KiB
Raw Permalink Blame History

Kompatibilitäts-Testkorpus

Kleine BAS- und FRM-Referenzprogramme mit unabhängig begründeter Sollausgabe. cargo test --locked -p tb-cli --test compat übersetzt sie, führt sie ohne Terminal durch die TBVM und vergleicht jeden Lauf mit seiner .out. Jeder Fall läuft zweimal. Mehrere deklarierte Bildschirmgrößen besitzen jeweils eine eigene <name>.<cols>x<rows>.out.

Snapshots enthalten das getrimmte Textbild und bei abweichenden Farben eine Attributebene. UTF-8 und LF sind verbindlich. PRINT-Leerzeichen sind auch am Zeilenende signifikant; .gitattributes schützt .out vor Konvertierung. Breite Zeichen erscheinen einmal, ihre Fortsetzungszellen werden nicht als zusätzliches Leerzeichen ausgegeben. Die Farbdiagnose nennt Bildschirmspalten.

Kopfzeilen stehen bei BAS am Anfang, bei FRM in den ersten acht Codezeilen:

  • tb-screen: 80x25 ist Pflicht; mehrere Größen werden durch Kommas getrennt.
  • tb-resize: nach 1 auf 120x40 liefert eine einzelne Größenänderung nach dem angegebenen Host-Zustellpunkt.
  • tb-keys: beschreibt Tasten; <TAB>, <ENTER>, <ESC>, <F1> bis <F12> und Pfeiltasten sind benannt, +/^/% stehen für Shift/Ctrl/Alt.
  • tb-events: ordnet Tasten, Maus, Zeit und Resize ausdrücklich, etwa key:<TAB> | resize:100x30 | mouse:down,1,0,4,25 | time:250ms. Mausfelder sind Art, Taste, Modifikatoren, Zeile, Spalte (einsbasiert). time: rückt die virtuelle Uhr um den Wert vor; ohne Zeitschritt steht sie bei 0. mouse:up und mouse:move ergänzen Loslassen und Bewegung.
  • tb-clock: 25ms/Zustellpunkt ist die alternative Uhr für TIMER-Traps; der Harness verbietet fehlende Trap-Uhren und die Mischung mit tb-events.
  • tb-tempdir führt Dateiprogramme in einem frischen leeren Arbeitsverzeichnis aus und entfernt es danach, auch beim Entrollen eines Testfehlers.
  • tb-tz: +00:00 setzt eine feste Zone, tb-tz: unknown prüft UTC-Rückfall. Datums-/Zeitproben setzen ihre Werte oder prüfen ausdrücklich Invarianten; Zufall verwendet eine feste Saat.

release-formular.frm verbindet Fokuswechsel, Mausklick, Menü und Resize mit farbiger Unicode-Ausgabe. Das Soll folgt den Handlern Lost;Got;Click;Menu;, COLOR 14,1 (e1) und LOCATE 2,90 nach Resize auf 100×30. Der Test verändert gezielt ein Zeichen und ein Attribut in der Erwartung und muss beides erkennen. Das Soll wird nicht aus dem VM-Istwert gewonnen. Bestehende formular.frm-/Listen-/Timerfälle prüfen zusätzlich die sichtbare Formularzeichnung und modale Übergänge.

Die Programme eingabefortschritt, timezoneknown und timezonefallback prüfen Codepoints, gemeinsame Dateileseposition und Zonenzustand. Späterer Zonenausfall und Erholung werden mit einer ersetzbaren Quelle geprüft, ohne die Rechnerzeitzone zu ändern.

Erforderliche Release-Grundabnahme

python3 tests/support/release-abnahme.py --vbdos-repo /absoluter/pfad/zu/vbdos

Der Aufruf funktioniert auch außerhalb des Checkouts mit absolutem Skriptpfad. Er benötigt Python 3, Cargo/Rust sowie Git und tar für den Fremdbestand. Er lädt nichts herunter. Der Git-Bestand muss HEAD 1cdd2b32b829fe1721d0b6aecc433abc47a96fb6 enthalten; der Test exportiert exakt diese Revision in temporäre Verzeichnisse, sodass lokale Änderungen am Fremdcheckout nicht in die Prüfung eingehen.

Zuerst läuft der erforderliche Fremdtest mit --include-ignored, danach Workspace-Regressionen, Inventarbericht, Format, Clippy und die vorhandenen Compile-/VM-Benchmarks. Jeder Fehler beendet den Aufruf erfolglos. Ohne Bestand oder mit falscher Revision entsteht kein bestandener Release-Nachweis. Der normale Entwicklertest darf den Fremdtest weiter ignorieren; er allein ist keine Release-Abnahme. Das ignorierte Golden-Erzeugungswerkzeug wird vom Release-Aufruf niemals gestartet. Bestehende Sollwerte werden nur nach Prüfung ihrer Spec-/Referenzgrundlage geändert.

Fallzuordnung, Eingabefolgen, Referenzrevision und Messwerte stehen im Change phase-6-01-kompatibilitaet-und-leistungsabnahme in abnahmematrix.md und verification.md (nach Archivierung unter openspec/changes/archive/). Diese Grundabnahme ersetzt keine native EXE-/TBL-, reale Terminalmatrix- oder Gitea-Releaseprüfung; diese folgen mit Phase-6-Changes 0207.