88 lines
7.7 KiB
Markdown
88 lines
7.7 KiB
Markdown
# 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:
|
||
|
||
```sh
|
||
# 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.
|