-" 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
- let l:pos = getpos(".")
- let l:postfix = matchstr(getline(search(".*\s*def .*[Tt]est", "b")), '\w\+(')[:-2]
- let l:postfix = matchstr(getline(search("^\s*class", "bn")), '\w\+(')[:-2] . "." . l:postfix
- call setpos(".", l:pos)
- let l:base = join([""] + split(getcwd(), "/")[:-1], "/")
- let l:prefix = substitute(expand("%:p:r")[len(l:base)+1:], "/", ".", "g")
- let l:name = l:prefix . ":" . l:postfix
- let @* = l:name
- echomsg l:name
-endfunction
+# 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
+enddef