scopedvr-map-editor/tests/probe_update_check.gd
Hermes (scopedvr-dev) d637314b82 Update-Check: sichtbares Ergebnis-Fenster für „🔄 Updates prüfen“ (Sly-Wunsch 20.10.).
Befund: der Check funktionierte die ganze Zeit — die Rückmeldung kam aber
NUR in der Statuszeile („Du bist auf dem neusten Stand (…).“) und verblasst
dort schnell → las sich wie „tut nichts“. Probe (echter Menü-Klick): Check
läuft, ls-remote ok, Status korrekt.

Fix: nach dem MANUELLEN Check (report=true) öffnet ein kleines AcceptDialog
„Update-Check“ mit Klartext-Ergebnis (Stil wie Map-Check-Dialog):
- up_to_date: „Du bist auf dem neusten Stand (<sha>).“
- update_available: Zusätzlich zum Banner das Fenster mit local → remote
  und Hinweis auf „Jetzt updaten“.
- unreachable / auth_failed / error: gleicher Klartext wie Statuszeile.
Der Still-Start-Check (report=false) zeigt bewusst KEIN Fenster (nur Banner
bei „Update verfügbar“) — Probe belegt: Popup sichtbar=false.
Probe: probe_update_check (echter Menü-Klick → Popup sichtbar + Text).
Suiten: test_updater 75 OK, test_resize_dialog 44 OK, test_theme 35 OK,
test_gui_smoke 92 OK, test_ux 137 OK, test_ui_layout 79 OK.
2026-10-20 18:37:38 +00:00

32 lines
1.4 KiB
GDScript

extends SceneTree
## „🔄 Updates prüfen“ per echtem Menü-Signal auslösen und den Statuszeilen-
## Text beobachten — deckt ab: Menü-Pfad, Thread, Statusmeldung.
func _initialize() -> void:
_run.call_deferred()
func _run() -> void:
var scene: PackedScene = load("res://scenes/main.tscn")
var main: Control = scene.instantiate()
root.add_child(main)
await process_frame
await process_frame
main._start_with_new_map()
# Echter Menü-Pfad: Datei-Popup id_pressed(7).
var file_menu_btn: MenuButton = null
for n in main.find_children("*", "MenuButton", true, false):
if n is MenuButton and n.text == "Datei":
file_menu_btn = n
(file_menu_btn.get_popup() as PopupMenu).id_pressed.emit(7)
print("PROBE direkt nach Klick: status='", main.status_label.text if "status_label" in main else "?", "' busy=", main._update_check_busy)
for i in 60:
await process_frame
if not main._update_check_busy:
break
print("PROBE nach Thread: busy=", main._update_check_busy, " status='", main.status_label.text, "'")
print("PROBE popup: visible=", main.update_dialog.visible, " text='", main.update_text.text, "'")
# Still-Start-Check (report=false) darf KEIN Popup zeigen.
main.update_dialog.hide()
main._updater_check_done({"status": "up_to_date", "local": "abc", "remote": "abc"}, false)
print("PROBE still-check: popup sichtbar=", main.update_dialog.visible)
quit(0)