vim-themis, vital-power-assert を使って単体テストのコードを書いたので、ここに作業を記録する。
手順概要
- 必要なパッケージを導入
.themisrc
を作成する- テストコードを書く
- テストを実行する
以下、各手順を説明していく。
1. vim-themis
導入
vim 標準のパッケージマネージャを使っているので、下記構成で git submodule add
した。
.vim
└── pack
└── test
└── opt
├── vim-themis
├── vital.vim
├── vital-power-assert
├── vital-safe-string
└── vital-vimlcompiler
注意点 :
vital-power-assert
は、vital.vim
,vital-vimlcompiler
,vital-safe-string
に依存しているので忘れず導入する- テスト時しか使用しないので、
opt
に入れる
2. .themisrc
を作成する
vital-power-assert の README, '.themisrc' を参照しつつ .themisrc
を作成。
packadd! vital.vim
packadd! vital-vimlcompiler
packadd! vital-safe-string
packadd! vital-power-assert
"
let g:__vital_power_assert_config = {
\ '__debug__': 1,
\ '__pseudo_throw__': 0
\ }
注意点 :
- 必要なパッケージを
packadd!
で追加 - themis へのランタイムパス追加は必要なかった。(
packadd!
で追加されるのかな?)
3. テストコードを書く
テストコードは、プラグインディレクトリ直下に test
ディレクトリを作ってその中に書いていく。
vital-power-assert の README, 'test/Example.vimspec' をマネして Vimspeck-style で記述した。
Describe Test for buffer_selector
Before all
let V = vital#of('vital')
let PowerAssert = V.import('Vim.PowerAssert')
let s:assert = PowerAssert.assert
End
It test_GetBufNo
let buffers_buffer = ' 1 h "[無名]" 行 0'
\ . "\n" . ' 9 h "[無名]" 行 0'
\ . "\n" . ' 10 h "[無名]" 行 0'
\ . "\n" . '119 %a "[無名]" 行 1'
put!=buffers_buffer
call cursor(1, 1)
let bufno = buffer_selector#GetBufNo()
execute s:assert('bufno is# "1"')
call cursor(2, 1)
let bufno = buffer_selector#GetBufNo()
execute s:assert('bufno is# "9"')
call cursor(3, 1)
let bufno = buffer_selector#GetBufNo()
execute s:assert('bufno is# "10"')
call cursor(4, 1)
let bufno = buffer_selector#GetBufNo()
execute s:assert('bufno is# "119"')
End
End
4. テストを実行する
ターミナルでプラグインのルートディレクトリに移動して、themis を実行すると、 vimspec
ファイルを探して実行してくれる。
~/.vim/pack/test/opt/vim-themis/bin/themis --reporter spec
Test for buffer_selector
[✓] test_GetBufNo
tests 1
passes 1
fail の場合は下記のようになる。
~/.vim/pack/test/opt/vim-themis/bin/themis --reporter spec
Test for buffer_selector
[✖] test_GetBufNo
function 89() abort dict Line:22 ()
vital: PowerAssert:
bufno is# "120"
| |
'119' 0
tests 1
passes 0
fails 1
実際にやってみたプロジェクトはこちら
buffer_selector.vim - Added test code.
「どうすればテストしやすいか」と、「どうやってテストするか」はまだまだ勉強が必要だ...。
以上。