私が維持している別の (純粋な Vimscript) UT プラグインがあります。
文書化されており、いくつかの例が付属しており、他のプラグインでも使用されています。
関数の結果とバッファの内容をテストし、クイックフィックス ウィンドウにエラーを表示することを目的としています。例外コールスタックもデコードされます。私の知る限り、これはこれまでのところ (または少なくとも最初の) 唯一のプラグインで、クイックフィックス ウィンドウを埋めることを意図しています。それ以来、rspec (+Vimrunner) でテスト結果を生成するヘルパー スクリプトを追加しました。
v2.0 (2020 年 5 月) 以降、プラグインはバッファ コンテンツをテストすることもできます。これは、マッピング/スニペット/... で変更された後です。それまでは、他のプラグインを使用していました。たとえば、VimRunner+RSpec を使用して travis で C++ スニペット (lh-cpp から) をテストしていました。
構文に関しては、たとえば次のようになります
Assert 1 > 2
Assert 1 > 0
Assert s:foo > s:Bar(g:var + 28) / strlen("foobar")
debug AssertTxt (s:foo > s:Bar(g:var+28)
\, s:foo." isn't bigger than s:Bar(".g:var."+28)")
AssertEquals!('a', 'a')
AssertDiffers('a', 'a')
let dict = {}
AssertIs(dict, dict)
AssertIsNot(dict, dict)
AssertMatch('abc', 'a')
AssertRelation(1, '<', 2)
AssertThrows 0 + [0]
生成されます:
tests/lh/README.vim|| SUITE <[lh#UT] Demonstrate assertions in README>
tests/lh/README.vim|27 error| assertion failed: 1 > 2
tests/lh/README.vim|31 error| assertion failed: s:foo > s:Bar(g:var + 28) / strlen("foobar")
tests/lh/README.vim|33 error| assertion failed: -1 isn't bigger than s:Bar(5+28)
tests/lh/README.vim|37 error| assertion failed: 'a' is not different from 'a'
tests/lh/README.vim|40 error| assertion failed: {} is not identical to {}
または、バッファの内容をテストしたい場合
silent! call lh#window#create_window_with('new') " work around possible E36
try
" :SetBufferContent a/file/name.txt
" or
SetBufferContent << trim EOF
1
3
2
EOF
%sort
" AssertBufferMatch a/file/NAME.txt
" or
AssertBufferMatch << trim EOF
1
4
3
EOF
finally
silent bw!
endtry
その結果、
tests/lh/README.vim|78 error| assertion failed: Observed buffer does not match Expected reference:
|| ---
|| +++
|| @@ -1,3 +1,3 @@
|| 1
|| -4
|| +2
|| 3
(D
クイックフィックス ウィンドウを押すと、新しいタブの差分モードで期待される結果と一緒に生成された結果が開きます)