diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2021-02-06 13:39:01 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2021-02-08 10:47:32 +0100 |
commit | 09b79463d71f3b144a0cfd878108a012c87464ca (patch) | |
tree | bb8ad85b9545c683a705f65c6c78e644e40acca7 /cli/lsp/language_server.rs | |
parent | ccbaedb138038c175f4a62929ccf3ec625683893 (diff) |
feat(lsp): add asset cache regression test
When we migrated away from all the locks, there was a regression that
was not caught immediately. The tsc::get_asset() would attempt to modify
the snapshot, but the problem was that the snapshot was a .clone() of
the inner language server's assets, which meant that modifications to
that where lost. When we then attempted to do a hover on those assets,
the inner language servers assets didn't have the retrieved asset, and
therefore would throw an error.
Diffstat (limited to 'cli/lsp/language_server.rs')
-rw-r--r-- | cli/lsp/language_server.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 2050cf2b7..e22934dc3 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -1935,6 +1935,51 @@ mod tests { } #[tokio::test] + async fn test_hover_asset() { + let mut harness = LspTestHarness::new(vec![ + ("initialize_request.json", LspResponse::RequestAny), + ("initialized_notification.json", LspResponse::None), + ("did_open_notification_asset.json", LspResponse::None), + ("hover_request_asset_01.json", LspResponse::RequestAny), + ( + "virtual_text_document_request.json", + LspResponse::RequestAny, + ), + ( + "hover_request_asset_02.json", + LspResponse::Request( + 4, + json!({ + "contents": [ + { + "language": "typescript", + "value": "interface Date", + }, + "Enables basic storage and retrieval of dates and times." + ], + "range": { + "start": { + "line": 109, + "character": 10, + }, + "end": { + "line": 109, + "character": 14, + } + } + }), + ), + ), + ( + "shutdown_request.json", + LspResponse::Request(3, json!(null)), + ), + ("exit_notification.json", LspResponse::None), + ]); + harness.run().await; + } + + #[tokio::test] async fn test_hover_disabled() { let mut harness = LspTestHarness::new(vec![ ("initialize_request_disabled.json", LspResponse::RequestAny), |