-" Nose-compatible test name preparer
-" Maintainer: Sergey Matveev <stargrave@stargrave.org>
-" License: GNU General Public License version 3 of the License or later
-"
-" When standing inside TestCase's test method, type <leader>t and full
-" Python (your.project.tests:TestCaseName.test_method_name) path will be
-" copied to clipboard ("*) register.
+vim9script
-function! python#testname#get() abort
- normal mm
- normal ?.*\s*def .*[Tt]est\r
- normal ^f(Byw
- let postfix = @"
- normal [[f(Byw
- let postfix = @" . "." . postfix
- normal `m
- let base = join([""] + split(getcwd(), "/")[:-1], "/")
- let prefix = substitute(expand("%:p:r")[len(base)+1:], "/", ".", "g")
- let name = prefix . ":" . postfix
- let @* = name
+# Nose-compatible test name preparer
+# Maintainer: Sergey Matveev <stargrave@stargrave.org>
+# License: GNU General Public License version 3 of the License or later
+#
+# When standing inside TestCase's test method, type <leader>t and full
+# Python (your.project.tests:TestCaseName.test_method_name) path will be
+# copied to clipboard ("*) register.
+
+export def Get()
+ var pos = getpos(".")
+ var postfix = matchstr(getline(search(".*\s*def .*[Tt]est", "b")), '\w\+(')[: -2]
+ postfix = matchstr(getline(search("^\s*class", "bn")), '\w\+(')[: -2] .. "." .. postfix
+ setpos(".", pos)
+ var base = join([""] + split(getcwd(), "/")[: -1], "/")
+ var prefix = substitute(expand("%:p:r")[len(base) + 1 :], "/", ".", "g")
+ var name = prefix .. ":" .. postfix
+ @* = name
echomsg name
-endfunction
+enddef