151 lines · 4.3 KB · Scheme
RawDownload
; subclasses of unittest.TestCase or TestCase(    (class_definition        name: (identifier) @run @_unittest_class_name        superclasses: (argument_list            [(identifier) @_superclass                (attribute (identifier) @_superclass)]            )        (#eq? @_superclass "TestCase")        ) @_python-unittest-class    (#set! tag python-unittest-class)    ) ; test methods whose names start with `test` in a TestCase(    (class_definition        name: (identifier) @_unittest_class_name        superclasses: (argument_list            [(identifier) @_superclass                (attribute (identifier) @_superclass)]            )        (#eq? @_superclass "TestCase")        body: (block            (function_definition                name: (identifier) @run @_unittest_method_name                (#match? @_unittest_method_name "^test.*")                ) @_python-unittest-method            (#set! tag python-unittest-method)            )        )    ) ; pytest functions(    (module        (function_definition            name: (identifier) @run @_pytest_method_name            (#match? @_pytest_method_name "^test_")            ) @_python-pytest-method        )    (#set! tag python-pytest-method)    ) ; decorated pytest functions(    (module        (decorated_definition            (decorator)+ @_decorator            definition: (function_definition                name: (identifier) @run @_pytest_method_name                (#match? @_pytest_method_name "^test_")                )            ) @_python-pytest-method        )    (#set! tag python-pytest-method)    )  ; pytest classes(    (module        (class_definition            name: (identifier) @run @_pytest_class_name            (#match? @_pytest_class_name "^Test")            )        (#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(    (module        (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)            )        )    ) ; 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        (if_statement            condition: (comparison_operator                (identifier) @run @_lhs                operators: "=="                (string) @_rhs                )            (#eq? @_lhs "__name__")            (#match? @_rhs "^[\"']__main__[\"']$")            (#set! tag python-module-main-method)            )        )    )