From 8c9a782dfe94525dc5f0893c98fd19543648264b Mon Sep 17 00:00:00 2001 From: historia Date: Tue, 25 Aug 2026 19:03:09 -0400 Subject: fix: tui errors wait for getch() --- app/tests/test_hub.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'app/tests/test_hub.py') diff --git a/app/tests/test_hub.py b/app/tests/test_hub.py index ec079f5..3feaa05 100644 --- a/app/tests/test_hub.py +++ b/app/tests/test_hub.py @@ -1730,6 +1730,40 @@ class ConfigureBackendsDispatchTests(unittest.TestCase): self.assertIs(result, tui.Wizard.BACK) self.assertEqual(flashes, ["kaboom"]) + def test_screen_install_runs_setup_inline_then_goes_back(self): + # No stack frame for the setup: BACK pops past the picker straight + # to the Configure menu instead of re-showing "Install Backend". + info = BackendInfo("qwen", "qwen-tts", lambda: None, lambda: 0) + with patch.object(hub._Hub, "_pick_backend", return_value=info), \ + patch.object(info, "setup_screen") as mk_setup: + result = hub._Hub(None).screen_install() + mk_setup.assert_called_once_with(None) + self.assertIs(result, tui.Wizard.BACK) + + def test_screen_install_esc_on_picker_goes_back_without_setup(self): + info = BackendInfo("qwen", "qwen-tts", lambda: None, lambda: 0) + with patch.object(hub._Hub, "_pick_backend", return_value=None), \ + patch.object(info, "setup_screen") as mk_setup: + result = hub._Hub(None).screen_install() + mk_setup.assert_not_called() + self.assertIs(result, tui.Wizard.BACK) + + def test_screen_install_flashes_on_crash_and_still_goes_back(self): + info = BackendInfo("qwen", "qwen-tts", lambda: None, lambda: 0) + flashes = [] + + def boom(scr): + raise RuntimeError("kaboom") + + with patch.object(hub._Hub, "_pick_backend", return_value=info), \ + patch.object(info, "setup_screen", boom), \ + patch.object(hub.tui, "flash", + lambda scr, text, kind="warn": + flashes.append(text)): + result = hub._Hub(None).screen_install() + self.assertIs(result, tui.Wizard.BACK) + self.assertEqual(flashes, ["kaboom"]) + def test_screen_uninstall_runs_in_task_view_and_goes_back(self): info = BackendInfo("qwen", "qwen-tts", lambda: None, lambda: 0) with patch.object(hub._Hub, "_pick_backend", return_value=info), \ -- cgit v1.2.3