2010/08/17

RSpecとAutotestとJRuby --1.9のメモ

autotestというかautospecしたいので設定メモ。Ubuntuのポップアップ(OSD)で結果を通知する。

#まずはZenTestと通知用のautotest-notifyosdというGemを入れる。 gem install ZenTest autotest-notifyosd --no-ri --no-rdoc #autotest-notifyosdはlibnotifyがいるらしい sudo aptitude libnotify-bin #autotest-notifyosdのセットアップ ~/.rvm/gems/jruby-1.5.1/gems/autotest-notifyosd-0.0.3/bin/enable-autotest-notifyosd

JRubyを1.9モードで起動するための設定。~/.autotestというファイルを作って以下を書き込む。

Autotest.add_hook :initialize do |at| def at.ruby "#{super} --1.9" end end

specディレクトリのあるところでautospecと実行すると、autospecが開始される。 specディレクトリ内のファイルに変更があるたびに、テストが実行され結果がOSDに表示されるようになる。

変更されたファイルだけテストしたいときはどうすればいいのだろう?

2010/08/16

RubySpecメモ

以下のメッセージがでたら./rubyspec_tempを消す。

----------------------------------------------------- The rubyspec temp directory is not empty. Ensure that all specs are cleaning up temporary files. -----------------------------------------------------

JRubyの1.9コンパチモードで実行するには-Tでjrubyに--1.9オプションを渡す。ついでに1.9用のコンフィグファイルを読ませる必要がある?

mspec -B ruby.1.9.mspec run -tj -T --1.9 .

encodingとか1.9からの機能に関するspecにはwith_featureっていうガードがかかっていて、ruby.1.x.mspecというコンフィグファイル内で有効無効を制御しているっぽい。RUBY_VERSIONをみて、どのコンフィグファイルを読むか制御していると書いているのだけど、jruby --1.9だとruby.1.9.mspecを読まないのか、encodingまわりなどのspecを実行してくれないようだ。

コンフィグファイル指定なしの場合

mspec -T --1.9 core/encoding/names_spec.rb jruby 1.5.1 (ruby 1.9.2dev trunk 24787) (2010-06-06 f3a3480) (Java HotSpot(TM) Client VM 1.6.0_20) [i386-java] Finished in 0.069000 seconds 1 file, 0 examples, 0 expectations, 0 failures, 0 errors

コンフィグファイル指定ありの場合

mspec -B ruby.1.9.mspec -tj -T --1.9 core/encoding/names_spec.rb jruby 1.5.1 (ruby 1.9.2dev trunk 24787) (2010-06-06 f3a3480) (Java HotSpot(TM) Client VM 1.6.0_20) [i386-java] .... Finished in 0.602000 seconds 1 file, 4 examples, 637 expectations, 0 failures, 0 errors

-tr19だとインタプリタがruby1.9という名前でないとだめっぽい。rvmとかで1.9を使っている場合rubyになるので、素直に-trでいいみたい。