Add runnable support for Deno.test (#34593)
Bedis Nbiba
created 3 months ago
example of detected code:
```ts
Deno.test("t", () => {
console.log("Hello, World!");
});
Deno.test(function azaz() {
console.log("Hello, World!");
});
```
I can't build zed locally so I didn't test this, but I think the code is
straightforward enough, hopefully someone else can verify it
Closes #ISSUE
Release Notes:
- N/A
Change summary
crates/languages/src/typescript/runnables.scm | 41 ++++++++++++++++++++
docs/src/languages/deno.md | 34 +++++++++++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
Detailed changes
@@ -1,4 +1,4 @@
-; Add support for (node:test, bun:test and Jest) runnable
+; Add support for (node:test, bun:test, Jest and Deno.test) runnable
; Function expression that has `it`, `test` or `describe` as the function name
(
(call_expression
@@ -44,3 +44,42 @@
(#set! tag js-test)
)
+
+; Add support for Deno.test with string names
+(
+ (call_expression
+ function: (member_expression
+ object: (identifier) @_namespace
+ property: (property_identifier) @_method
+ )
+ (#eq? @_namespace "Deno")
+ (#eq? @_method "test")
+ arguments: (
+ arguments . [
+ (string (string_fragment) @run @DENO_TEST_NAME)
+ (identifier) @run @DENO_TEST_NAME
+ ]
+ )
+ ) @_js-test
+
+ (#set! tag js-test)
+)
+
+; Add support for Deno.test with named function expressions
+(
+ (call_expression
+ function: (member_expression
+ object: (identifier) @_namespace
+ property: (property_identifier) @_method
+ )
+ (#eq? @_namespace "Deno")
+ (#eq? @_method "test")
+ arguments: (
+ arguments . (function_expression
+ name: (identifier) @run @DENO_TEST_NAME
+ )
+ )
+ ) @_js-test
+
+ (#set! tag js-test)
+)
@@ -57,6 +57,40 @@ See [Configuring supported languages](../configuring-languages.md) in the Zed do
TBD: Deno Typescript REPL instructions [docs/repl#typescript-deno](../repl.md#typescript-deno)
-->
+## DAP support
+
+To debug deno programs, add this to `.zed/debug.json`
+
+```json
+[
+ {
+ "adapter": "JavaScript",
+ "label": "Deno",
+ "request": "launch",
+ "type": "pwa-node",
+ "cwd": "$ZED_WORKTREE_ROOT",
+ "program": "$ZED_FILE",
+ "runtimeExecutable": "deno",
+ "runtimeArgs": ["run", "--allow-all", "--inspect-wait"],
+ "attachSimplePort": 9229
+ }
+]
+```
+
+## Runnable support
+
+To run deno tasks like tests from the ui, add this to `.zed/tasks.json`
+
+```json
+[
+ {
+ "label": "deno test",
+ "command": "deno test -A --filter '/^$ZED_CUSTOM_DENO_TEST_NAME$/' $ZED_FILE",
+ "tags": ["js-test"]
+ }
+]
+```
+
## See also:
- [TypeScript](./typescript.md)