7.7 KiB
Release-Grundabnahme: Fälle und Voraussetzungen
Basis: 54ee427c1c676170450068c5436e5875c84c9dce, lokale Änderungen dieses
Changes. Alle folgenden Tests sind headless. Keine DOS-/GUI-Emulatoren.
Ausführbare Aufrufe
Vom Repository aus; --locked bewahrt die Abhängigkeitsrevisionen:
# K: gesamter Korpus einschließlich Vergleichs-Gegenproben
cargo test --locked -p tb-cli --test compat
# P: Projekte, Includes, TBC, Diagnosen und Dateieffekte
cargo test --locked -p tb-cli --test project
# I: Inventar, Sollquellen, Absenkungsziele und Statusgruppen
cargo test --locked -p tb-cli --test inventar -- --nocapture
# E: tatsächliche Ereignisauslöser bis BASIC
cargo test --locked -p tb-vm --test events
# A: IDE-Projektablauf, CLI-/TBC-Parität und Befehlsmatrix
cargo test --locked -p tb-cli --bin tbc ide_acceptance::
# F: Pflichtnachweis des fixierten öffentlichen Bestands
TB_VBDOS_REPO=/absoluter/pfad/zu/vbdos cargo test --locked -p tb-cli --test foreign -- --include-ignored --nocapture
# G: zusammenhängende Grundabnahme, zuerst F, dann Workspace/Inventar/Gates/Benchmarks
python3 tests/support/release-abnahme.py --vbdos-repo /absoluter/pfad/zu/vbdos
Unter Windows wird TB_VBDOS_REPO als Prozessumgebungsvariable gesetzt; G übernimmt dies plattformunabhängig. Alle Aufrufe liefern bei Fehler einen von null verschiedenen Exitcode. Die reale Windows-/Linux-Prüfung folgt in 05/06, diese Matrix behauptet nur die ausgeführten lokalen Nachweise.
Verhaltensgruppen und unabhängiges Soll
| Gruppe | Fälle | Aufruf | Soll und festgelegter Anfangszustand |
|---|---|---|---|
| Konsole/Zahlen/Steuerung | hello, printzahlen, konvertierung, byref, kontrollfluss |
K: korpus_laeuft_mit_korrekter_ausgabe |
Jeweilige .out, explizite tb-screen-Größe, keine Eingaben, Hostuhr 0; bestehende Sprach-/VM-Specs |
| Unicode/Attribute/Größe | breitezeichen, bildschirm, groesse, groessenaenderung, release-formular |
K | COLOR/LOCATE-/Unicodevertrag; 80×25 bzw. 120×40, deklarierte Resize-Schritte; für release-formular 100×30 und Zeichen ab Spalte 90 |
| Forms/Fokus/Maus/Menü | formular, formular-access-backtab, eingabe-maus-taste, eingabe-taste-maus, release-formular |
K | Geordnete Kopfereignisse; LostFocus vor GotFocus, genau ein Click, Menüauswahl; separate Zeichen-/Farberwartungen und zwei Läufe |
| Listen/Timer/modal | listenauswahl, timer-aktivierung, formular |
K | Deklarierte Tasten/Maus/Zeit; bestehende .out mit Listenauswahl, Timertext und Dialogresultat |
| Zeit/Traps | traps, trap-masken, datumzeit, timezoneknown, timezonefallback |
K, E | Virtuelle Uhr oder ausdrücklich gesetzte Zeit/Zone; KEY/UEVENT/TIMER-Masken und Reihenfolge. Zeitlose Invarianten bleiben als solche benannt |
| Dateien/ISAM | dateien, eingabefortschritt, alle isam*.bas |
K | Frisches leeres Tempverzeichnis, deklarierte Bildschirmgröße, feste Dateiinhalte aus dem BASIC-Programm; .out prüft Lese-/Record-/Transaktionsresultate |
| Projekt-/Include-/Dateikette | release_projekt_prueft_anfangsdateien_dateieffekte_und_include_fehler |
P | Zwei Module, verschachtelte Includes; seed.txt=Grüße\n, result.txt=Start\n; Ergebnis exakt Start\nGrüße\n, Quelle unverändert, Exit 2 und inner.bi Zeile 8 Spalte 5; Quell-/TBC-Lauf jeweils zweimal, Library-Quellen vor TBC-Lauf entfernt |
| Fehler/physische Orte | fehlerbehandlung; cli_meldet_physische_quellorte_auch_nach_verschachtelten_includes; tbc_run_stop_exitcode, tbc_run_laufzeitfehler_exitcode |
K, P | ERR/ERL getrennt von Dateizeile; STOP=3, Runtimefehler=2; Sollstellen im jeweiligen Test, keine Systemzeitabhängigkeit |
| Quellfreie Projekte und Startdatei | projekt_und_formular_laufen_nach_entfernen_saemtlicher_quellen, explicit_startup_order_and_form_selection_survive_tbc |
P | Festes Projekt/Form/Include, danach Quellen entfernt; identische Ausgabe und richtige Startformularwahl aus TBC |
| Vollständiges Inventar | inventar_stimmt_mit_code_ueberein, jeder_inventareintrag_erreicht_hir_und_laufzeitziel, forms_inventar_stimmt_mit_der_klassentabelle_ueberein, abdeckungsstand_wird_ausgewiesen |
I | docs/inventar plus feste Inventar-Quellliste und unabhängige Absenkungsziele; Gegenproben für falsche Status-/Builtin-/Forms-Bindung |
| Ereignisvollständigkeit | registrierte_form_ereignisse_erreichen_basic_aus_realen_quellen, registrierte_control_ereignisse_erreichen_basic_aus_realen_quellen, fehlender_ereignispfad_wird_namentlich_erkannt |
E | Jede registrierte Quelle löst ihren BASIC-Handler aus; künstlich fehlender Auslöser wird benannt |
| IDE/CLI/TBC | create_save_debug_help_exports_and_reopen, saved_project_ide_source_cli_and_tbc_have_identical_sessions, reference_matrix_is_complete_and_points_to_runnable_tests |
A | Feste Tastensequenzen, Hostzeiten, Anfangsdateien und konkrete Ausgabe/Dateieffekte; bestehende 45-zeilige Phase-5-Befehlsmatrix. Native Exporterzeugung ist hier noch nicht implementiert |
| Dialog-EOF | eof_im_dialog_eines_formularhandlers_beendet_die_ereignispumpe, eof_leert_angenommene_eingaben_bei_modalen_und_modellosen_forms |
E | EOF in einem Dialog beendet die Pumpe; bereits angenommene normale Formularereignisse bleiben vor EOF zustellbar |
| Vergleichsqualität | release_formular_vergleicht_zeichen_und_attribute_unabhaengig, farbabweichung_nennt_zeile_spalte_soll_und_ist, fehlende_groessenangabe_wird_abgewiesen |
K | Vorab geschriebene Sollausgabe; gezielte Text-/Farbmutation, verkürzte Attributzeile und CJK-Spaltenposition müssen konkrete Diagnosen liefern |
Jede Korpus-Sollausgabe muss bereits existieren. Der Harness erzeugt bei
fehlendem Soll keine Ersatzdatei. Neue Ausgabe release-formular.out wurde
aus Handlerfolge und COLOR/LOCATE-Vorgaben geschrieben, nicht vom Istwert
übernommen. Bestehende Golden-Dateien bleiben unverändert.
Öffentlicher Bestand
cout/vbdos, Revision 1cdd2b32b829fe1721d0b6aecc433abc47a96fb6.
Lokaler Prüfbestand: /tmp/terminalbasic-vbdos-evidence; die Bereitstellung
ist extern und wird nicht einvendort. git archive liefert für jeden Lauf
frische Dateien exakt dieser Revision. Größe 100×30, virtuelle Hostuhr 0,
keine echten Wartezeiten; je Einstieg zwei Läufe mit gleichen Eingaben.
| Einstieg | Eingabe | Erwartete sichtbare Wirkung |
|---|---|---|
graphics/graphics.mak |
Alt+X | Startformular sichtbar, danach entladen |
microsoft/check.mak |
Alt+F, X, N im Save-Dialog | Menü und Save-Dialog nachgewiesen, N konsumiert, Exit entlädt Formular |
microsoft/qlbview.mak |
Esc | Cancel entlädt Startformular |
microsoft/seek.mak |
Alt+X | Exit entlädt Startformular |
microsoft/spindemo.mak |
Tab, Tab, Pfeil hoch | Text1 wird 1, sichtbarer Snapshot ändert sich |
microsoft/notepad.frm |
Alt+F, X, N im Save-Dialog | Menü und Save-Dialog nachgewiesen, N konsumiert, Formular entladen |
misc/mentors/mentors.frm |
Alt+F, X, N im Save-Dialog | Menü und Save-Dialog nachgewiesen, N konsumiert, Exit entlädt Formular |
Snapshots/Zustände müssen zwischen beiden Läufen identisch sein; die obigen konkreten Wirkungen werden zusätzlich geprüft. Ein bloßer Vergleich zweier gleich falscher Starts genügt nicht. Fehlendes TB_VBDOS_REPO, ein unlesbares Repository und eine falsche HEAD-Revision scheitern mit Sollrevision und konkreter Ursache. Temporäre Dateien werden bei Erfolg und beim Entrollen von Assertions aufgeräumt.
Übergabe an 02–07
G ist der wiederverwendbare lokale Abnahmeaufruf für spätere Actions; F bleibt zwingend. 02–04 ergänzen EXE-/TBL-/IDE-Link-Parität mit diesem Sollsatz, 05 echte Terminalziele, 06 Zielpakete und Gitea-Läufe. Die finale Inventar- und Leistungsprüfung nach deren Fachänderungen gehört in 07. Dieser Change baut keine nativen Exportartefakte und nimmt keine fremden Plattformen ab.