summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/lsp/code_lens.rs82
-rw-r--r--cli/tests/testdata/lsp/code_lens_response_test.json224
2 files changed, 293 insertions, 13 deletions
diff --git a/cli/lsp/code_lens.rs b/cli/lsp/code_lens.rs
index 635f34916..42c9123fb 100644
--- a/cli/lsp/code_lens.rs
+++ b/cli/lsp/code_lens.rs
@@ -80,14 +80,32 @@ impl DenoTestCollector {
}
}
- fn add_code_lens<N: AsRef<str>>(&mut self, name: N, span: &Span) {
+ fn add_code_lenses<N: AsRef<str>>(&mut self, name: N, span: &Span) {
let range = span_to_range(span, &self.parsed_source);
+ self.add_code_lens(&name, range, "▶\u{fe0e} Run Test", false);
+ self.add_code_lens(&name, range, "Debug", true);
+ }
+
+ fn add_code_lens<N: AsRef<str>>(
+ &mut self,
+ name: &N,
+ range: lsp::Range,
+ title: &str,
+ inspect: bool,
+ ) {
+ let options = json!({
+ "inspect": inspect,
+ });
self.code_lenses.push(lsp::CodeLens {
range,
command: Some(lsp::Command {
- title: "▶\u{fe0e} Run Test".to_string(),
+ title: title.to_string(),
command: "deno.test".to_string(),
- arguments: Some(vec![json!(self.specifier), json!(name.as_ref())]),
+ arguments: Some(vec![
+ json!(self.specifier),
+ json!(name.as_ref()),
+ options,
+ ]),
}),
data: None,
});
@@ -106,7 +124,7 @@ impl DenoTestCollector {
key_value_prop.value.as_ref()
{
let name = lit_str.value.to_string();
- self.add_code_lens(name, span);
+ self.add_code_lenses(name, span);
}
}
}
@@ -116,7 +134,7 @@ impl DenoTestCollector {
}
ast::Expr::Lit(ast::Lit::Str(lit_str)) => {
let name = lit_str.value.to_string();
- self.add_code_lens(name, span);
+ self.add_code_lenses(name, span);
}
_ => (),
}
@@ -581,6 +599,33 @@ mod tests {
arguments: Some(vec![
json!("https://deno.land/x/mod.ts"),
json!("test a"),
+ json!({
+ "inspect": false,
+ }),
+ ])
+ }),
+ data: None,
+ },
+ lsp::CodeLens {
+ range: lsp::Range {
+ start: lsp::Position {
+ line: 1,
+ character: 11
+ },
+ end: lsp::Position {
+ line: 1,
+ character: 15
+ }
+ },
+ command: Some(lsp::Command {
+ title: "Debug".to_string(),
+ command: "deno.test".to_string(),
+ arguments: Some(vec![
+ json!("https://deno.land/x/mod.ts"),
+ json!("test a"),
+ json!({
+ "inspect": true,
+ }),
])
}),
data: None,
@@ -602,6 +647,33 @@ mod tests {
arguments: Some(vec![
json!("https://deno.land/x/mod.ts"),
json!("test b"),
+ json!({
+ "inspect": false,
+ }),
+ ])
+ }),
+ data: None,
+ },
+ lsp::CodeLens {
+ range: lsp::Range {
+ start: lsp::Position {
+ line: 6,
+ character: 11
+ },
+ end: lsp::Position {
+ line: 6,
+ character: 15
+ }
+ },
+ command: Some(lsp::Command {
+ title: "Debug".to_string(),
+ command: "deno.test".to_string(),
+ arguments: Some(vec![
+ json!("https://deno.land/x/mod.ts"),
+ json!("test b"),
+ json!({
+ "inspect": true,
+ }),
])
}),
data: None,
diff --git a/cli/tests/testdata/lsp/code_lens_response_test.json b/cli/tests/testdata/lsp/code_lens_response_test.json
index b2cb4588a..159839816 100644
--- a/cli/tests/testdata/lsp/code_lens_response_test.json
+++ b/cli/tests/testdata/lsp/code_lens_response_test.json
@@ -15,7 +15,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test a"
+ "test a",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 4,
+ "character": 5
+ },
+ "end": {
+ "line": 4,
+ "character": 9
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test a",
+ {
+ "inspect": true
+ }
]
}
},
@@ -35,7 +61,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test b"
+ "test b",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 5,
+ "character": 5
+ },
+ "end": {
+ "line": 5,
+ "character": 9
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test b",
+ {
+ "inspect": true
+ }
]
}
},
@@ -55,7 +107,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test c"
+ "test c",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 9,
+ "character": 0
+ },
+ "end": {
+ "line": 9,
+ "character": 4
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test c",
+ {
+ "inspect": true
+ }
]
}
},
@@ -75,7 +153,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test d"
+ "test d",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 13,
+ "character": 0
+ },
+ "end": {
+ "line": 13,
+ "character": 4
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test d",
+ {
+ "inspect": true
+ }
]
}
},
@@ -95,7 +199,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test e"
+ "test e",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 14,
+ "character": 0
+ },
+ "end": {
+ "line": 14,
+ "character": 5
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test e",
+ {
+ "inspect": true
+ }
]
}
},
@@ -115,7 +245,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test f"
+ "test f",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 18,
+ "character": 0
+ },
+ "end": {
+ "line": 18,
+ "character": 5
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test f",
+ {
+ "inspect": true
+ }
]
}
},
@@ -135,7 +291,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test g"
+ "test g",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 19,
+ "character": 0
+ },
+ "end": {
+ "line": 19,
+ "character": 5
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test g",
+ {
+ "inspect": true
+ }
]
}
},
@@ -155,7 +337,33 @@
"command": "deno.test",
"arguments": [
"file:///a/file.ts",
- "test h"
+ "test h",
+ {
+ "inspect": false
+ }
+ ]
+ }
+ },
+ {
+ "range": {
+ "start": {
+ "line": 23,
+ "character": 0
+ },
+ "end": {
+ "line": 23,
+ "character": 5
+ }
+ },
+ "command": {
+ "title": "Debug",
+ "command": "deno.test",
+ "arguments": [
+ "file:///a/file.ts",
+ "test h",
+ {
+ "inspect": true
+ }
]
}
}