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")
|
(#eq? @_superclass "TestCase")
|
||||||
) @_python-unittest-class
|
) @_python-unittest-class
|
||||||
(#set! tag python-unittest-class)
|
(#set! tag python-unittest-class)
|
||||||
)
|
)
|
||||||
|
|
||||||
; test methods whose names start with `test` in a TestCase
|
; test methods whose names start with `test` in a TestCase
|
||||||
(
|
(
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
(#set! tag python-unittest-method)
|
(#set! tag python-unittest-method)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
; pytest functions
|
; pytest functions
|
||||||
(
|
(
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
) @_python-pytest-method
|
) @_python-pytest-method
|
||||||
)
|
)
|
||||||
(#set! tag python-pytest-method)
|
(#set! tag python-pytest-method)
|
||||||
)
|
)
|
||||||
|
|
||||||
; decorated pytest functions
|
; decorated pytest functions
|
||||||
(
|
(
|
||||||
|
@ -53,7 +53,8 @@
|
||||||
) @_python-pytest-method
|
) @_python-pytest-method
|
||||||
)
|
)
|
||||||
(#set! tag python-pytest-method)
|
(#set! tag python-pytest-method)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
; pytest classes
|
; pytest classes
|
||||||
(
|
(
|
||||||
|
@ -64,7 +65,23 @@
|
||||||
)
|
)
|
||||||
(#set! tag python-pytest-class)
|
(#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
|
; pytest class methods
|
||||||
(
|
(
|
||||||
|
@ -73,35 +90,49 @@
|
||||||
name: (identifier) @_pytest_class_name
|
name: (identifier) @_pytest_class_name
|
||||||
(#match? @_pytest_class_name "^Test")
|
(#match? @_pytest_class_name "^Test")
|
||||||
body: (block
|
body: (block
|
||||||
(function_definition
|
[(decorated_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
|
|
||||||
(decorator)+ @_decorator
|
(decorator)+ @_decorator
|
||||||
definition: (function_definition
|
definition: (function_definition
|
||||||
name: (identifier) @run @_pytest_method_name
|
name: (identifier) @run @_pytest_method_name
|
||||||
(#match? @_pytest_method_name "^test_")
|
(#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)
|
(#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
|
; module main method
|
||||||
(
|
(
|
||||||
|
@ -117,4 +148,4 @@
|
||||||
(#set! tag python-module-main-method)
|
(#set! tag python-module-main-method)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue