120 lines · 3.2 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)    )) ; pytest class methods(    (module        (class_definition            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                    (decorator)+ @_decorator                    definition: (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)        )    ))