Change summary
crates/collab/src/rpc.rs | 7 +++----
crates/collab/src/rpc/connection_pool.rs | 1 +
crates/collab/src/tests/dev_server_tests.rs | 23 +++++++++++++++++++++++
3 files changed, 27 insertions(+), 4 deletions(-)
Detailed changes
@@ -2583,14 +2583,13 @@ async fn rejoin_dev_server_projects(
)
.await?
};
- notify_rejoined_projects(&mut rejoined_projects, &session)?;
-
response.send(proto::RejoinRemoteProjectsResponse {
rejoined_projects: rejoined_projects
- .into_iter()
+ .iter()
.map(|project| project.to_proto())
.collect(),
- })
+ })?;
+ notify_rejoined_projects(&mut rejoined_projects, &session)
}
async fn reconnect_dev_server(
@@ -73,6 +73,7 @@ impl ConnectionPool {
pub fn reset(&mut self) {
self.connections.clear();
self.connected_users.clear();
+ self.connected_dev_servers.clear();
self.channels.clear();
}
@@ -504,6 +504,29 @@ async fn test_dev_server_reconnect(
.unwrap();
}
+#[gpui::test]
+async fn test_dev_server_restart(cx1: &mut gpui::TestAppContext, cx2: &mut gpui::TestAppContext) {
+ let (server, client1) = TestServer::start1(cx1).await;
+
+ let (_dev_server, remote_workspace) =
+ create_dev_server_project(&server, client1.app_state.clone(), cx1, cx2).await;
+ let cx = VisualTestContext::from_window(remote_workspace.into(), cx1).as_mut();
+
+ server.reset().await;
+ cx.run_until_parked();
+
+ cx.simulate_keystrokes("cmd-p 1 enter");
+ remote_workspace
+ .update(cx, |ws, cx| {
+ ws.active_item_as::<Editor>(cx)
+ .unwrap()
+ .update(cx, |ed, cx| {
+ assert_eq!(ed.text(cx).to_string(), "remote\nremote\nremote");
+ })
+ })
+ .unwrap();
+}
+
#[gpui::test]
async fn test_create_dev_server_project_path_validation(
cx1: &mut gpui::TestAppContext,