読者です 読者をやめる 読者になる 読者になる

VimTestプラグインを更新した(0.0.1 -> 0.0.2)

vim vimtest

https://github.com/kannokanno/vimtest
更新しました。
ChangeLogから抜粋。

  • 実行コマンド(:VimTest/:VimTestBuffer/:VimTestStdout)の追加
  • 出力結果のフォーマットを変更
  • notEquals -> not_equalsにリネーム
  • 日本語helpの追加
  • vimtest/sampleを更新
  • vimtest/testを追加
  • READMEの内容を更新
  • 多くのリファクタを実施
  • 多くのバグを修正

実行コマンド(:VimTest/:VimTestBuffer/:VimTestStdout)の追加

0.0.1では「call vimtest#run()」というのをテストファイルの末尾に書く必要がありました。

let testcase = vimtest#new('さんぷる')
function! testcase.hogehoge_test()
  call self.assert.equals(3, 1 + 2)
endfunction
call vimtest#run()

これがダサいandメンドイのダブルパンチだったので、実行用のコマンドを定義しました。
上記例でいうとcall ~が不要になります。

let testcase = vimtest#new('さんぷる')
function! testcase.hogehoge_test()
  call self.assert.equals(3, 1 + 2)
endfunction

で、:VimTestというコマンドを実行すると専用のバッファに出力されます。

出力結果のフォーマットを変更

以下のような失敗するテストがあるとします。

let testcase = vimtest#new('failed test1')
function! testcase.failed()
  call self.assert.equals(2, 1)
endfunction

0.0.1での出力はこうでした。

EFE

# failed test1
1) failed
Failed asserting expected:<2> but was:<1>

FAILURES!
Test cases run: 3, Passes: 0, Failures: 3

0.0.2ではこうなります。

F
# failed test1
1) 'failed' is FAILED
Failed asserting that two values are equal
- expected:2
+ actual:1


Test cases run: 1, Passes: 0, Failures: 1

notEquals -> not_equalsにリネーム

いまのところ特に誰もVimTest使ってないだろうということで、
メソッド名を勢いよく変更しました。

日本語helpの追加

ヘルプを作りました。:help vimtestでご覧になれます。
英語ヘルプはありません。日本語のみです。

vimtest/sampleを更新

0.0.1の時もsampleはあったんですが、ちょっと分割したりしました。
内容的には特に変わってないし、ヘルプにあるのと重複したりしてます。

vimtest/testを追加

今回多くの時間をかけたところの一つ。VimTest自体のテストをVimTestを使って書きました。
量はそんなに多くないんですが、テストを書くのに合わせてリファクタするのに時間がかかった。
何にせよこれにより自分自身で使ってみることができてよかった。
実際に使ってみて「こういうのが欲しいな」という案はいくつかあって、
それは今後実装していきたいなと。

vimtest/sampleと合わせて、使い方の例になるかと思います。

今後のTODO

内部的には大分整理されてきていて満足なのですが、
機能的には色々と足りない点が見えてきました。
今のところ、こういうのを追加したいと考えています。

  • カバレッジ取りたい(できる?)
  • 結果のグリーン/レッドの色付けしたい
  • 異常系のテストを書けるようにする
  • スクリプトローカルなファイルに対してのテスト
  • 命名規則を決めて、テスト実行前に自動でプロダクトコードのファイルをsourceする
  • s:foo.hoge()内でのエラーについて、メンバ関数名を表示したい
    • Vimの仕様上たしか詳細を出すのは無理だった気がするけど、ある程度のヒントは出したい
  • モック機能の追加(できる範囲で)
  • ディレクトリを指定しての実行
  • 画面テスト(無策)

TODOじゃないんだけど気になっていること

  • アサートの書き方が「call self.assert.xx」で長い...
  • テストメソッド名にどうしても日本語を使いたくなる