diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-11-17 16:40:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-17 16:40:12 -0500 |
commit | f46802cb1e70d3a0c06cd74dd1d7a5798cf9bfe4 (patch) | |
tree | bdf3723bbb08e1f9434fa98f5da0d261e05d9cdd /cli/lsp/language_server.rs | |
parent | 88bc2ed02d51bfabfa751de7dcf41bc659ce0f52 (diff) |
refactor(upgrade): add unit tests for lsp upgrade check (#21244)
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 6f0c96746..9b3359db9 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -3115,7 +3115,7 @@ impl tower_lsp::LanguageServer for LanguageServer { async fn initialized(&self, _: InitializedParams) { let mut registrations = Vec::with_capacity(2); - let client = { + let (client, http_client) = { let mut ls = self.0.write().await; if ls .config @@ -3165,7 +3165,7 @@ impl tower_lsp::LanguageServer for LanguageServer { ); ls.maybe_testing_server = Some(test_server); } - ls.client.clone() + (ls.client.clone(), ls.http_client.clone()) }; for registration in registrations { @@ -3193,22 +3193,25 @@ impl tower_lsp::LanguageServer for LanguageServer { lsp_log!("Server ready."); if upgrade_check_enabled() { - let http_client = self.0.read().await.http_client.clone(); - match check_for_upgrades_for_lsp(http_client).await { - Ok(version_info) => { - client.send_did_upgrade_check_notification( - lsp_custom::DidUpgradeCheckNotificationParams { - upgrade_available: version_info.map( - |(latest_version, is_canary)| lsp_custom::UpgradeAvailable { - latest_version, - is_canary, - }, - ), - }, - ); + // spawn to avoid lsp send/sync requirement, but also just + // to ensure this initialized method returns quickly + spawn(async move { + match check_for_upgrades_for_lsp(http_client).await { + Ok(version_info) => { + client.send_did_upgrade_check_notification( + lsp_custom::DidUpgradeCheckNotificationParams { + upgrade_available: version_info.map(|info| { + lsp_custom::UpgradeAvailable { + latest_version: info.latest_version, + is_canary: info.is_canary, + } + }), + }, + ); + } + Err(err) => lsp_warn!("Failed to check for upgrades: {err}"), } - Err(err) => lsp_warn!("Failed to check for upgrades: {err}"), - } + }); } } |