Keep session manager open on launch failure

This commit is contained in:
2026-09-12 18:25:39 +00:00
parent e5c5c3015f
commit d6697d46f8
5 changed files with 217 additions and 42 deletions
+49
View File
@@ -316,6 +316,55 @@ class SelectorCatalogTests(unittest.TestCase):
class SelectorActionTests(unittest.TestCase):
def test_open_failure_stays_in_context_and_retry_can_succeed(self) -> None:
with tempfile.TemporaryDirectory() as directory:
attempts: list[SelectorResult] = []
def activate(result: SelectorResult) -> None:
attempts.append(result)
if len(attempts) == 1:
raise RuntimeError(
"Bad owner or permissions on /etc/ssh/ssh_config"
)
selector = SessionSelector(
[
CatalogWindow(
"@1",
"remote:pi:default",
"pi",
True,
False,
kind="remote",
target="pi",
session="default",
)
],
RemoteRegistry(Path(directory) / "remotes.json"),
"/missing/ssh",
activate_handler=activate,
)
self.addCleanup(selector.pool.close)
row = next(
item
for item in selector._rows() # type: ignore[attr-defined]
if item.key == "window:@1"
)
self.assertIsNone(selector._activate(row)) # type: ignore[attr-defined]
self.assertEqual(selector.view, "actions")
self.assertIn("打开失败", selector.message)
self.assertIn("ssh_config", selector.context_row.error)
retry = next(
item
for item in selector._rows() # type: ignore[attr-defined]
if item.kind == "action-window"
)
self.assertEqual(selector.selected_key, retry.key)
self.assertFalse(selector._activate(retry)) # type: ignore[attr-defined]
self.assertEqual(len(attempts), 2)
def test_search_is_explicit_and_escape_preserves_selection(self) -> None:
with tempfile.TemporaryDirectory() as directory:
window = CatalogWindow(