python: Fix identification of runnable tests within decorated test classes (#29688)
Closes #29486 Release Notes: - python: Fixed identification of runnable test functions within decorated pytest classes
This commit is contained in:
parent
4d934f2884
commit
d03d8ccec1
1 changed files with 70 additions and 39 deletions
|
@ -9,7 +9,7 @@
|
|||
(#eq? @_superclass "TestCase")
|
||||
) @_python-unittest-class
|
||||
(#set! tag python-unittest-class)
|
||||
)
|
||||
)
|
||||
|
||||
; test methods whose names start with `test` in a TestCase
|
||||
(
|
||||
|
@ -28,7 +28,7 @@
|
|||
(#set! tag python-unittest-method)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
; pytest functions
|
||||
(
|
||||
|
@ -39,7 +39,7 @@
|
|||
) @_python-pytest-method
|
||||
)
|
||||
(#set! tag python-pytest-method)
|
||||
)
|
||||
)
|
||||
|
||||
; decorated pytest functions
|
||||
(
|
||||
|
@ -53,7 +53,8 @@
|
|||
) @_python-pytest-method
|
||||
)
|
||||
(#set! tag python-pytest-method)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
; pytest classes
|
||||
(
|
||||
|
@ -64,7 +65,23 @@
|
|||
)
|
||||
(#set! tag python-pytest-class)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
; decorated pytest classes
|
||||
(
|
||||
(module
|
||||
(decorated_definition
|
||||
(decorator)+ @_decorator
|
||||
definition: (class_definition
|
||||
name: (identifier) @run @_pytest_class_name
|
||||
(#match? @_pytest_class_name "^Test")
|
||||
)
|
||||
)
|
||||
(#set! tag python-pytest-class)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
; pytest class methods
|
||||
(
|
||||
|
@ -73,35 +90,49 @@
|
|||
name: (identifier) @_pytest_class_name
|
||||
(#match? @_pytest_class_name "^Test")
|
||||
body: (block
|
||||
(function_definition
|
||||
name: (identifier) @run @_pytest_method_name
|
||||
(#match? @_pytest_method_name "^test")
|
||||
) @_python-pytest-method
|
||||
(#set! tag python-pytest-method)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
; decorated pytest class methods
|
||||
(
|
||||
(module
|
||||
(class_definition
|
||||
name: (identifier) @_pytest_class_name
|
||||
(#match? @_pytest_class_name "^Test")
|
||||
body: (block
|
||||
(decorated_definition
|
||||
[(decorated_definition
|
||||
(decorator)+ @_decorator
|
||||
definition: (function_definition
|
||||
name: (identifier) @run @_pytest_method_name
|
||||
(#match? @_pytest_method_name "^test_")
|
||||
)
|
||||
)
|
||||
) @_python-pytest-method
|
||||
(function_definition
|
||||
name: (identifier) @run @_pytest_method_name
|
||||
(#match? @_pytest_method_name "^test")
|
||||
)
|
||||
] @_python-pytest-method)
|
||||
(#set! tag python-pytest-method)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
; decorated pytest class methods
|
||||
(
|
||||
(module
|
||||
(decorated_definition
|
||||
(decorator)+ @_decorator
|
||||
definition: (class_definition
|
||||
name: (identifier) @_pytest_class_name
|
||||
(#match? @_pytest_class_name "^Test")
|
||||
body: (block
|
||||
[(decorated_definition
|
||||
(decorator)+ @_decorator
|
||||
definition: (function_definition
|
||||
name: (identifier) @run @_pytest_method_name
|
||||
(#match? @_pytest_method_name "^test_")
|
||||
)
|
||||
)
|
||||
(function_definition
|
||||
name: (identifier) @run @_pytest_method_name
|
||||
(#match? @_pytest_method_name "^test")
|
||||
)
|
||||
] @_python-pytest-method)
|
||||
(#set! tag python-pytest-method)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
; module main method
|
||||
(
|
||||
|
@ -117,4 +148,4 @@
|
|||
(#set! tag python-module-main-method)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue