Skip to content

Commit

Permalink
feat: add test suite support
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrikaverpil committed Jun 25, 2024
1 parent 13607d0 commit 5abb5e8
Showing 1 changed file with 22 additions and 11 deletions.
33 changes: 22 additions & 11 deletions lua/neotest-golang/ast.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,36 @@ local M = {}
--- Detect test names in Go *._test.go files.
--- @param file_path string
function M.detect_tests(file_path)
local functions_and_methods = [[
;;query
local test_function = [[
; query for test function
((function_declaration
name: (identifier) @test.name)
(#match? @test.name "^(Test|Example)"))
name: (identifier) @test.name) (#match? @test.name "^(Test|Example)"))
@test.definition
(method_declaration
name: (field_identifier) @test.name
(#match? @test.name "^(Test|Example)")) @test.definition
; query for subtest, like t.Run()
(call_expression
function: (selector_expression
field: (field_identifier) @test.method)
(#match? @test.method "^Run$")
field: (field_identifier) @test.method) (#match? @test.method "^Run$")
arguments: (argument_list . (interpreted_string_literal) @test.name))
@test.definition
]]

local test_method = [[
; query for test method
(method_declaration
name: (field_identifier) @test.name (#match? @test.name "^(Test|Example)")) @test.definition
]]

local receiver_method = [[
; query for receiver method, to be used as test suite namespace
(method_declaration
receiver: (parameter_list
(parameter_declaration
; name: (identifier)
type: (pointer_type
(type_identifier) @namespace.name (#match? @namespace.name "(Test|Example|Suite)") )))) @namespace.definition
]]

local table_tests = [[
;; query for list table tests
(block
Expand Down Expand Up @@ -90,7 +101,7 @@ function M.detect_tests(file_path)
(#eq? @test.key.name @test.key.name1))))))))
]]

local query = functions_and_methods .. table_tests
local query = test_function .. test_method .. receiver_method .. table_tests
local opts = { nested_tests = true }

---@type neotest.Tree
Expand Down

0 comments on commit 5abb5e8

Please sign in to comment.