; Functions names start with `Test`( ( (function_declaration name: (_) @run (#match? @run "^Test.*")) ) @_ (#set! tag go-test)) ; `go:generate` comments( ((comment) @_comment @run (#match? @_comment "^//go:generate")) (#set! tag go-generate)) ; `t.Run`( ( (call_expression function: ( selector_expression field: _ @run @_name (#eq? @_name "Run") ) arguments: ( argument_list . (interpreted_string_literal) @_subtest_name . (func_literal parameters: ( parameter_list (parameter_declaration name: (identifier) @_param_name type: (pointer_type (qualified_type package: (package_identifier) @_pkg name: (type_identifier) @_type (#eq? @_pkg "testing") (#eq? @_type "T") ) ) ) ) ) @_second_argument ) ) ) @_ (#set! tag go-subtest)) ; Functions names start with `Benchmark`( ( (function_declaration name: (_) @run @_name (#match? @_name "^Benchmark.+")) ) @_ (#set! tag go-benchmark)) ; Functions names start with `Fuzz`( ( (function_declaration name: (_) @run @_name (#match? @_name "^Fuzz")) ) @_ (#set! tag go-fuzz)) ; go run( ( (function_declaration name: (_) @run (#eq? @run "main")) ) @_ (#set! tag go-main))
; Functions names start with `Test`
(
(
(function_declaration name: (_) @run
(#match? @run "^Test.*"))
) @_
(#set! tag go-test)
)
; `go:generate` comments
(
((comment) @_comment @run
(#match? @_comment "^//go:generate"))
(#set! tag go-generate)
)
; `t.Run`
(
(
(call_expression
function: (
selector_expression
field: _ @run @_name
(#eq? @_name "Run")
)
arguments: (
argument_list
.
(interpreted_string_literal) @_subtest_name
.
(func_literal
parameters: (
parameter_list
(parameter_declaration
name: (identifier) @_param_name
type: (pointer_type
(qualified_type
package: (package_identifier) @_pkg
name: (type_identifier) @_type
(#eq? @_pkg "testing")
(#eq? @_type "T")
)
)
)
)
) @_second_argument
)
)
) @_
(#set! tag go-subtest)
)
; Functions names start with `Benchmark`
(
(
(function_declaration name: (_) @run @_name
(#match? @_name "^Benchmark.+"))
) @_
(#set! tag go-benchmark)
)
; Functions names start with `Fuzz`
(
(
(function_declaration name: (_) @run @_name
(#match? @_name "^Fuzz"))
) @_
(#set! tag go-fuzz)
)
; go run
(
(
(function_declaration name: (_) @run
(#eq? @run "main"))
) @_
(#set! tag go-main)
)