Allow removing unreachable remotes from session manager
This commit is contained in:
@@ -109,6 +109,8 @@ class SelectorCatalogTests(unittest.TestCase):
|
||||
set(),
|
||||
)
|
||||
self.assertTrue(any(row.kind == "retry" for row in failed))
|
||||
retry = next(row for row in failed if row.kind == "retry")
|
||||
self.assertIn("d/D 移除记录", retry.main)
|
||||
matches = filter_rows(failed, "offline")
|
||||
self.assertEqual([row.kind for row in matches], ["retry"])
|
||||
|
||||
@@ -277,6 +279,34 @@ class SelectorCatalogTests(unittest.TestCase):
|
||||
|
||||
|
||||
class SelectorActionTests(unittest.TestCase):
|
||||
def test_unreachable_remote_can_be_removed_with_delete_key(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
registry = RemoteRegistry(Path(directory) / "remotes.json")
|
||||
entry = RemoteEntry("tang1@10.8.0.7")
|
||||
registry.upsert(entry)
|
||||
selector = SessionSelector([], registry, "/missing/ssh")
|
||||
self.addCleanup(selector.pool.close)
|
||||
self.addCleanup(selector.action_executor.shutdown, wait=True)
|
||||
selector.results[entry.target] = RemoteQueryResult(
|
||||
entry,
|
||||
error="ssh: connect to host 10.8.0.7 port 22: Connection timed out",
|
||||
)
|
||||
|
||||
rows = selector._rows() # type: ignore[attr-defined]
|
||||
retry = next(item for item in rows if item.kind == "retry")
|
||||
selector.selected_key = retry.key
|
||||
selector._handle_key("D", rows) # type: ignore[attr-defined]
|
||||
|
||||
self.assertEqual(selector.view, "confirm-remove")
|
||||
self.assertEqual(selector.input_target, entry.target)
|
||||
confirm_rows = selector._rows() # type: ignore[attr-defined]
|
||||
selector._handle_key("d", confirm_rows) # type: ignore[attr-defined]
|
||||
|
||||
self.assertEqual(selector.view, "main")
|
||||
self.assertEqual(registry.load(), [])
|
||||
self.assertNotIn(entry.target, selector.entries)
|
||||
self.assertIn("已移除", selector.message)
|
||||
|
||||
def test_remote_session_can_be_stopped_and_closed_without_closing_popup(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
registry = RemoteRegistry(Path(directory) / "remotes.json")
|
||||
|
||||
Reference in New Issue
Block a user