From a6e0c8aca161237515a7e5cf54f15e4de75879b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Ot=C3=A1vio=20Biondo?= Date: Fri, 31 May 2024 15:49:34 -0300 Subject: [PATCH] elixir: Add runnable tasks (#12526) Release Notes: - Added runnable tasks to Elixir tests (modules, `describe` and `test` blocks) https://github.com/zed-industries/zed/assets/7737375/06f1b4cb-0364-4c30-982d-6dda3193b5d2 --- .../elixir/languages/elixir/runnables.scm | 20 +++++++++++++++++++ extensions/elixir/languages/elixir/tasks.json | 6 ++++-- 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 extensions/elixir/languages/elixir/runnables.scm diff --git a/extensions/elixir/languages/elixir/runnables.scm b/extensions/elixir/languages/elixir/runnables.scm new file mode 100644 index 0000000000..13dc860586 --- /dev/null +++ b/extensions/elixir/languages/elixir/runnables.scm @@ -0,0 +1,20 @@ +; Macros `describe` and `test`. +; This matches the ExUnit test style. +( + (call + target: (identifier) @run (#any-of? @run "describe" "test") + ) @_elixir-test + (#set! tag elixir-test) +) + +; Modules containing at least one `describe` or `test`. +; This matches the ExUnit test style. +( + (call + target: (identifier) @run (#eq? @run "defmodule") + (do_block + (call target: (identifier) @_keyword (#any-of? @_keyword "describe" "test")) + ) + ) @_elixir-module-test + (#set! tag elixir-module-test) +) diff --git a/extensions/elixir/languages/elixir/tasks.json b/extensions/elixir/languages/elixir/tasks.json index e1db25cd37..d5026f0034 100644 --- a/extensions/elixir/languages/elixir/tasks.json +++ b/extensions/elixir/languages/elixir/tasks.json @@ -13,12 +13,14 @@ { "label": "mix test $ZED_RELATIVE_FILE", "command": "mix", - "args": ["test", "$ZED_RELATIVE_FILE"] + "args": ["test", "$ZED_RELATIVE_FILE"], + "tags": ["elixir-module-test"] }, { "label": "mix test $ZED_RELATIVE_FILE:$ZED_ROW", "command": "mix", - "args": ["test", "$ZED_RELATIVE_FILE:$ZED_ROW"] + "args": ["test", "$ZED_RELATIVE_FILE:$ZED_ROW"], + "tags": ["elixir-test"] }, { "label": "Elixir: break line",