vimで編集中のrubyテストを実行できるプラグイン
vimでrubyのテストを編集しているとき、テストメソッドごとに結果を確認しながら書き進めたいことなどないでしょうか。
ruby test/unit/hoge.rb -n test_fuga でテストメソッド単位の実行はできるけど、テストケース名が長かったりするとかなり面倒・・・
ところが、そんな悩みを解消してくれる子に出会いました。
GitHub - janx/vim-rubytest: Run ruby test in vim
vimで編集中のテストをその場で実行できるプラグインです。
install
$ git clone git://github.com/janx/vim-rubytest.git
で落として、 plugin/rubytest.vim を ~/.vim/ に配置するだけです。
(READMEには 'Copy all files to your ~/.vim directory.' とありますが、こちらの方法ではできませんでした)
ちなみにvimのバージョンは7.2でした。
usage
vimでの編集中にコマンドを打つとテストが実行されます。
t (\t) すると、カーソルの乗っているテストケースを実行 T (\T) すると、そのスクリプト内の全テストケースを実行
注意点としては、
- 実行中はvimのウィンドウからシェルに切り替わってしまう
- テストケース単体実行と言っても、テストケース名の部分一致で見ている
ていうか、 -n /test_xxx/ で部分一致指定ができたのですね・・・知らなんだ・・・後方一致もできましたし。
完全一致にしたい場合は、~/.vimrc でカスタマイズしてやりましょう。
let g:rubytest_cmd_testcase = "ruby %p -n %c"
さよなら -n オプション!
-
- -
はてブコメント見てたら、quickrun.vimというのもあるんですね。
スクリプト単位の実行なら、シェルに切り替わらないこちらが便利かもです。
参考:http://vim-users.jp/2009/05/hack7/
コメントありがとうございます!
-
- -
さらに追記。
本日ずっとコケ続けていたscreenのインストールに成功したので、コードとテスト結果が同画面で閲覧でき便利になりました。
-
- -
2011/08/22
さらにさらに追記。
railsのテストでrubytestを使っていたところ、次のエラーが出てテストが実行できない不具合に遭遇しました。
:!echo 'ruby integration/hogehoge_test.rb' && cd test && ruby integration/hogehoge_test.rb ruby integration/hogehoge_test.rb /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- lib/piyopiyo (MissingSourceFile) ・ ・ ・
テストコード中で require 'lib/piyopiyo' しているところで、そんなのいないよと怒られる。でも実際にはいる。
rakeや、コンソールからの ruby test/integration/hogehoge_test.rb 実行なら落ちない。
よく見ると、rubytestが cd test してからテストを実行しているのがわかります。
rubytestのソースを確認すると、確かに cd しているところがありました。
自分の環境では cd しなくても不都合はないため、次のようにパッチをあてました。(リビジョンはこちら)
[admin@localhost plugin]$ diff ~/.vim/plugin/rubytest.vim.orig ~/.vim/plugin/rubytest.vim 64,67c64,69 < if @% =~ '^test' < let cmd = substitute(cmd, '%p', s:EscapeBackSlash(strpart(@%,5)), '') < exe "!echo '" . cmd . "' && cd test && " . cmd < else --- > > " fix bug 'no such file to load', due to missing load path. > "if @% =~ '^test' > " let cmd = substitute(cmd, '%p', s:EscapeBackSlash(strpart(@%,5)), '') > " exe "!echo '" . cmd . "' && cd test && " . cmd > "else 70c72 < end --- > "end
なお、ソースが新しければこの不具合は起こらないと思います。
おそらくこれ以前のものが該当するのでは、と。
アップデートしましょという話かもしれないガ━━(;゚Д゚)━━ン!!