Perl には Test::Class という JUnit 風にテストを書けるモジュールがある。すなわち:
ことができる。
Test::Class はテスト実行時に環境変数 TEST_METHOD
に与えられた値で実行するテストメソッドをフィルタリングすることができる。
Sometimes you just want to run a single test. Commenting out other tests or writing code to skip them can be a hassle, so you can specify the TEST_METHOD environment variable. The value is expected to be a valid regular expression and, if present, only runs test methods whose names match the regular expression.
Test::Class - search.cpan.org
テストコードが存在するソフトウェアに修正を加える場合、大抵、いつかのタイミングでテストコードを修正することになる。そうなるとまず修正したテストのみを実行し、最小限度のフィードバックを得たい。
つまり、TEST_METHOD
を指定してテストを走らせたいのだが、いちいちテストメソッド名を入力するのも面倒である。
そこでテストの実行には vim-quickrun を、現在カーソルのあるメソッド名を取得するために current-func-info.vim を使う。
let g:quickrun_config['prove/carton'] = { \ 'exec' : 'carton exec -- %c %o %s', \ 'command' : 'prove', \ } let g:quickrun_config['prove/carton/contextual'] = extend(g:quickrun_config['prove/carton'], { \ 'exec' : 'TEST_METHOD=%a ' . g:quickrun_config['prove/carton'].exec, \ }) command! ProveThis call s:prove_this() function! s:prove_this() let func_name = cfi#format('%s', '') if func_name == '' QuickRun prove/carton else execute 'QuickRun prove/carton/contextual -args ' . func_name endif endfunction
メソッド名を得ることができればその値を引数として渡し prove/carton/contextual
の設定を使って QuickRun
を実行する。得られなければ prove/carton
を実行する。