diff options
-rw-r--r-- | cli/lsp/language_server.rs | 7 | ||||
-rw-r--r-- | cli/tests/integration/lsp_tests.rs | 48 | ||||
-rw-r--r-- | cli/tests/testdata/import_maps/import_map.json | 1 | ||||
-rw-r--r-- | cli/tests/testdata/import_maps/print_hello.ts | 3 | ||||
-rw-r--r-- | test_util/src/lsp.rs | 1 |
5 files changed, 54 insertions, 6 deletions
diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 1750b23c5..2a17b2e59 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -1052,13 +1052,8 @@ impl Inner { lsp_log!("Warning: Import map \"{}\" configured in \"{}\" being ignored due to an import map being explicitly configured in workspace settings.", import_map_path, config_file.specifier); } } - if let Ok(url) = Url::from_file_path(&import_map_str) { + if let Ok(url) = Url::parse(&import_map_str) { Some(url) - } else if import_map_str.starts_with("data:") { - let import_map_url = Url::parse(&import_map_str).map_err(|_| { - anyhow!("Bad data url for import map: {}", import_map_str) - })?; - Some(import_map_url) } else if let Some(root_uri) = self.config.root_uri() { let root_path = specifier_to_file_path(root_uri)?; let import_map_path = root_path.join(&import_map_str); diff --git a/cli/tests/integration/lsp_tests.rs b/cli/tests/integration/lsp_tests.rs index 44a5df700..9e9b3f8cd 100644 --- a/cli/tests/integration/lsp_tests.rs +++ b/cli/tests/integration/lsp_tests.rs @@ -207,6 +207,54 @@ fn lsp_import_map() { } #[test] +fn lsp_import_map_remote() { + let context = TestContextBuilder::new() + .use_http_server() + .use_temp_cwd() + .build(); + let temp_dir = context.temp_dir(); + temp_dir.write( + "deno.json", + json!({ + "importMap": "http://localhost:4545/import_maps/import_map.json", + }) + .to_string(), + ); + temp_dir.write( + "file.ts", + r#" + import { printHello } from "print_hello"; + printHello(); + "#, + ); + let mut client = context.new_lsp_command().build(); + client.initialize(|builder| { + builder.set_import_map("http://localhost:4545/import_maps/import_map.json"); + }); + client.write_request( + "workspace/executeCommand", + json!({ + "command": "deno.cache", + "arguments": [ + [], + temp_dir.uri().join("file.ts").unwrap(), + ], + }), + ); + + let diagnostics = client.did_open(json!({ + "textDocument": { + "uri": temp_dir.uri().join("file.ts").unwrap(), + "languageId": "typescript", + "version": 1, + "text": temp_dir.read_to_string("file.ts"), + } + })); + assert_eq!(diagnostics.all(), vec![]); + client.shutdown(); +} + +#[test] fn lsp_import_map_data_url() { let context = TestContextBuilder::new().use_temp_cwd().build(); let mut client = context.new_lsp_command().build(); diff --git a/cli/tests/testdata/import_maps/import_map.json b/cli/tests/testdata/import_maps/import_map.json index 601874aab..40d1d4ec2 100644 --- a/cli/tests/testdata/import_maps/import_map.json +++ b/cli/tests/testdata/import_maps/import_map.json @@ -1,5 +1,6 @@ { "imports": { + "print_hello": "./print_hello.ts", "moment": "./moment/moment.ts", "moment/": "./moment/", "lodash": "./lodash/lodash.ts", diff --git a/cli/tests/testdata/import_maps/print_hello.ts b/cli/tests/testdata/import_maps/print_hello.ts new file mode 100644 index 000000000..794257390 --- /dev/null +++ b/cli/tests/testdata/import_maps/print_hello.ts @@ -0,0 +1,3 @@ +export function printHello() { + console.log("Hello, world!"); +} diff --git a/test_util/src/lsp.rs b/test_util/src/lsp.rs index d953c86e7..4e87503f2 100644 --- a/test_util/src/lsp.rs +++ b/test_util/src/lsp.rs @@ -220,6 +220,7 @@ impl InitializeParamsBuilder { }), root_uri: None, initialization_options: Some(json!({ + "enableBuiltinCommands": true, "enable": true, "cache": null, "certificateStores": null, |