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

VimTestプラグインを更新した(0.0.3)

vim vimtest

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

  • 実行対象にディレクトリを指定可能にした
  • テスト実行前に自動で製品コードをsourceするようにした
  • 失敗メッセージにテストファイルのフルパスを表示
  • 実行コマンド(:VimTestQuickfix)の追加
  • 標準で実行するoutputterの指定を可能にした
  • コマンドラインにサマリーを表示するようにした
  • 自動テストを行うための監視対象を指定出来るようにした
  • 設定を手動で更新するための:VimTestResettingsの追加
  • いくつかのバグを修正

いくつか説明します。

実行対象にディレクトリを指定可能にした

VimTestの引数にディレクトリを渡すと、配下の*_test.vimを対象に実行されるようになりました。
この*_test.vimという命名規則は今のところユーザー側で指定出来ません。

テスト実行前に自動で製品コードをsourceするようにした

:help vimtest-auto-source

テスト作成(Red) -> 実装(Green) -> テスト修正(Red)みたいなことをやっていると、
実装フェーズで毎回sourceするのが面倒でした。
テストする上で実装コードをsourceし直さないってことはないだろうとも思ったので、
自動で実装コードをsourceするようにしました。

ヘルプに書いてありますが、命名規則に沿って実装コードを探します。
見つかればsourceして、見つからなければ何もせずにテスト実行します。

実行コマンド(:VimTestQuickfix)の追加

:help :VimTestQuickfix

テストが失敗した場合のみQuickfixが開きます。
ファイル名は失敗したテストのファイル名、行番号は1で固定です。
今のところUniteとかにフックする機能はなく、標準のQuickfixでしか開きません。
メッセージに改行が含まれているため標準のQuickfixだと見辛いので、
これはUniteへフック出来るようにしたいなと思っております。

行番号も取りたいんですが無理じゃないかと思ったり。

標準で実行するoutputterの指定を可能にした

:help vimtest-settings
:help vimtest-settings-example

.vimrcにg:vimtest_configというのを定義できるようにしました。
これに設定出来るオプションの一つとして標準の出力形式を選べます。

自動sourceとか自動テストとか実装したため、
標準がbufferだとちょっと邪魔に感じたので自分はquickfixを標準にしてます。

自動テストを行うための監視対象を指定出来るようにした

:help vimtest-settings
:help vimtest-settings-example

RubyでいうZenTest(autotest)とか、PHPでいうStagehand TestRunnerとか、
テストツールには「監視機能」という便利なものがあります。
指定したディレクトリ以下のファイルが更新されるたびにテストを自動で実行してくれるアレです。

それに似たような機能をつけました。
例えば以下のような設定をすると、テストコード/実装コードの
どちらかを更新するたびにテストが再実行されます。

let g:vimtest_config = {
      \ 'autotest_watch_patterns': ['~/.vim/bundle/vimtest/test/*.vim', '~/.vim/bundle/vimtest/autoload/vimtest/*.vim'],
      \ 'autotest_testpath': '~/.vim/bundle/vimtest/test/autoload',
      \ }

加えて前述の自動sourceにより、常に最新の状態でテストが行われます。便利!

感想

VimTest自体のテストをVimTestで書いているので実感するのですが、
今回のバージョンアップでテスト-実装のサイクルがなかなか楽になりました。

自分で作っている部品がちょっとずつパワーアップしていくのって楽しいですね。