From 83eb6ffe1eec3f1ad4ea2ae814e4d6a1b2cc2d12 Mon Sep 17 00:00:00 2001 From: Alexander Date: Thu, 12 Jun 2025 01:23:16 +0700 Subject: [PATCH] Apply TypeScript test improvements to tsx files (#32477) relates-to: #32467 relates-to: #31499 Release Notes: - N/A --- crates/languages/src/tsx/outline.scm | 25 +++++++++++++++++++++++- crates/languages/src/tsx/runnables.scm | 27 +++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/crates/languages/src/tsx/outline.scm b/crates/languages/src/tsx/outline.scm index c0c5c735e214d52a5f6a24456ba017a4b95493c6..df6ffa5aec8aa1b23b8179d0c341231feea5c0b5 100644 --- a/crates/languages/src/tsx/outline.scm +++ b/crates/languages/src/tsx/outline.scm @@ -83,7 +83,30 @@ ] @context (#any-of? @_name "it" "test" "describe" "context" "suite") arguments: ( - arguments . (string (string_fragment) @name) + arguments . [ + (string (string_fragment) @name) + (identifier) @name + ] + ) + ) +) @item + +; Add support for parameterized tests +( + (call_expression + function: (call_expression + function: (member_expression + object: [(identifier) @_name (member_expression object: (identifier) @_name)] + property: (property_identifier) @_property + ) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#any-of? @_property "each") + ) + arguments: ( + arguments . [ + (string (string_fragment) @name) + (identifier) @name + ] ) ) ) @item diff --git a/crates/languages/src/tsx/runnables.scm b/crates/languages/src/tsx/runnables.scm index 1b68b9a41e6ca9d28e8d34671937a69a9c4a63c7..85702cf99d9968b29f9375bfd8215ecba53f2eb5 100644 --- a/crates/languages/src/tsx/runnables.scm +++ b/crates/languages/src/tsx/runnables.scm @@ -13,7 +13,32 @@ ] (#any-of? @_name "it" "test" "describe" "context" "suite") arguments: ( - arguments . (string (string_fragment) @run) + arguments . [ + (string (string_fragment) @run) + (identifier) @run + ] + ) + ) @_js-test + + (#set! tag js-test) +) + +; Add support for parameterized tests +( + (call_expression + function: (call_expression + function: (member_expression + object: [(identifier) @_name (member_expression object: (identifier) @_name)] + property: (property_identifier) @_property + ) + (#any-of? @_name "it" "test" "describe" "context" "suite") + (#any-of? @_property "each") + ) + arguments: ( + arguments . [ + (string (string_fragment) @run) + (identifier) @run + ] ) ) @_js-test