summaryrefslogtreecommitdiff
path: root/cli/tests/integration
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/integration')
-rw-r--r--cli/tests/integration/lsp_tests.rs142
-rw-r--r--cli/tests/integration/run_tests.rs22
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,
+});