4.2 KiB
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: 80x25ist Pflicht; mehrere Größen werden durch Kommas getrennt.tb-resize: nach 1 auf 120x40liefert 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, etwakey:<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:upundmouse:moveergänzen Loslassen und Bewegung.tb-clock: 25ms/Zustellpunktist die alternative Uhr für TIMER-Traps; der Harness verbietet fehlende Trap-Uhren und die Mischung mit tb-events.tb-tempdirführt Dateiprogramme in einem frischen leeren Arbeitsverzeichnis aus und entfernt es danach, auch beim Entrollen eines Testfehlers.tb-tz: +00:00setzt eine feste Zone,tb-tz: unknownprü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 02–07.