diff options
Diffstat (limited to 'cli/tests/integration')
-rw-r--r-- | cli/tests/integration/lsp_tests.rs | 142 | ||||
-rw-r--r-- | cli/tests/integration/run_tests.rs | 22 |
2 files changed, 116 insertions, 48 deletions
diff --git a/cli/tests/integration/lsp_tests.rs b/cli/tests/integration/lsp_tests.rs index 4f08ad84b..f7c0e6137 100644 --- a/cli/tests/integration/lsp_tests.rs +++ b/cli/tests/integration/lsp_tests.rs @@ -4436,14 +4436,8 @@ fn lsp_completions_node_specifier() { json!([ { "range": { - "start": { - "line": 0, - "character": 15 - }, - "end": { - "line": 0, - "character": 34 - } + "start": { "line": 0, "character": 15 }, + "end": { "line": 0, "character": 34 }, }, "severity": 1, "code": "resolver-error", @@ -4453,7 +4447,7 @@ fn lsp_completions_node_specifier() { ]) ); - // update to have node:fs import + // update to have fs import client .write_notification( "textDocument/didChange", @@ -4465,21 +4459,108 @@ fn lsp_completions_node_specifier() { "contentChanges": [ { "range": { - "start": { - "line": 0, - "character": 16 + "start": { "line": 0, "character": 16 }, + "end": { "line": 0, "character": 33 }, + }, + "text": "fs" + } + ] + }), + ) + .unwrap(); + let diagnostics = read_diagnostics(&mut client); + let diagnostics = diagnostics + .with_file_and_source("file:///a/file.ts", "deno") + .diagnostics + .into_iter() + .filter(|d| { + d.code + == Some(lsp::NumberOrString::String( + "import-prefix-missing".to_string(), + )) + }) + .collect::<Vec<_>>(); + + // get the quick fixes + let (maybe_res, maybe_err) = client + .write_request( + "textDocument/codeAction", + json!({ + "textDocument": { + "uri": "file:///a/file.ts" + }, + "range": { + "start": { "line": 0, "character": 16 }, + "end": { "line": 0, "character": 18 }, + }, + "context": { + "diagnostics": json!(diagnostics), + "only": [ + "quickfix" + ] + } + }), + ) + .unwrap(); + assert!(maybe_err.is_none()); + assert_eq!( + maybe_res, + Some(json!([{ + "title": "Update specifier to node:fs", + "kind": "quickfix", + "diagnostics": [ + { + "range": { + "start": { "line": 0, "character": 15 }, + "end": { "line": 0, "character": 19 } + }, + "severity": 1, + "code": "import-prefix-missing", + "source": "deno", + "message": "Relative import path \"fs\" not prefixed with / or ./ or ../\nIf you want to use a built-in Node module, add a \"node:\" prefix (ex. \"node:fs\").", + "data": { + "specifier": "fs" + }, + } + ], + "edit": { + "changes": { + "file:///a/file.ts": [ + { + "range": { + "start": { "line": 0, "character": 15 }, + "end": { "line": 0, "character": 19 } }, - "end": { - "line": 0, - "character": 33 - } + "newText": "\"node:fs\"" + } + ] + } + } + }])) + ); + + // update to have node:fs import + client + .write_notification( + "textDocument/didChange", + json!({ + "textDocument": { + "uri": "file:///a/file.ts", + "version": 3, + }, + "contentChanges": [ + { + "range": { + "start": { "line": 0, "character": 15 }, + "end": { "line": 0, "character": 19 }, }, - "text": "node:fs" + "text": "\"node:fs\"", } ] }), ) .unwrap(); + let diagnostics = read_diagnostics(&mut client); let cache_diagnostics = diagnostics .with_file_and_source("file:///a/file.ts", "deno") @@ -4495,14 +4576,8 @@ fn lsp_completions_node_specifier() { json!([ { "range": { - "start": { - "line": 0, - "character": 15 - }, - "end": { - "line": 0, - "character": 24 - } + "start": { "line": 0, "character": 15 }, + "end": { "line": 0, "character": 24 } }, "data": { "specifier": "npm:@types/node", @@ -4539,19 +4614,13 @@ fn lsp_completions_node_specifier() { json!({ "textDocument": { "uri": "file:///a/file.ts", - "version": 2 + "version": 4 }, "contentChanges": [ { "range": { - "start": { - "line": 2, - "character": 0 - }, - "end": { - "line": 2, - "character": 0 - } + "start": { "line": 2, "character": 0 }, + "end": { "line": 2, "character": 0 } }, "text": "fs." } @@ -4568,10 +4637,7 @@ fn lsp_completions_node_specifier() { "textDocument": { "uri": "file:///a/file.ts" }, - "position": { - "line": 2, - "character": 3 - }, + "position": { "line": 2, "character": 3 }, "context": { "triggerKind": 2, "triggerCharacter": "." diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs index 4c1f6363a..65d567658 100644 --- a/cli/tests/integration/run_tests.rs +++ b/cli/tests/integration/run_tests.rs @@ -12,6 +12,7 @@ use tokio::task::LocalSet; use trust_dns_client::serialize::txt::Lexer; use trust_dns_client::serialize::txt::Parser; use util::assert_contains; +use util::env_vars_for_npm_tests_no_sync_download; itest!(stdout_write_all { args: "run --quiet run/stdout_write_all.ts", @@ -3749,22 +3750,23 @@ fn stdio_streams_are_locked_in_permission_prompt() { }); } -itest!(run_node_builtin_modules_ts { +itest!(node_builtin_modules_ts { args: "run --quiet run/node_builtin_modules/mod.ts", output: "run/node_builtin_modules/mod.ts.out", - envs: vec![( - "DENO_NODE_COMPAT_URL".to_string(), - test_util::std_file_url() - )], + envs: env_vars_for_npm_tests_no_sync_download(), exit_code: 0, }); -itest!(run_node_builtin_modules_js { +itest!(node_builtin_modules_js { args: "run --quiet run/node_builtin_modules/mod.js", output: "run/node_builtin_modules/mod.js.out", - envs: vec![( - "DENO_NODE_COMPAT_URL".to_string(), - test_util::std_file_url() - )], + envs: env_vars_for_npm_tests_no_sync_download(), exit_code: 0, }); + +itest!(node_prefix_missing { + args: "run --quiet run/node_prefix_missing/main.ts", + output: "run/node_prefix_missing/main.ts.out", + envs: env_vars_for_npm_tests_no_sync_download(), + exit_code: 1, +}); |