autotestとRSpec

autotest with RSpecはまだ不安定なのかな。3 日坊主日記 - rspec autotestがいつもgreenな件の情報をもとにsvn版をインストールしてみた。

svn checkout http://rspec.rubyforge.org/svn/trunk rspec_trunk
cd rspec_trunk/rspec
rake package
cd pkg
sudo gem install rspec-1.1.3.gem

これでautotest with RSpecがきちんと動くようにはなった。

autotest with RSpecはlibを$:に加えないのかな?

しかし、autotest with RSpecはlibを$:に加えないようだ。

autotest with Test::Unitならばautotestの中で↓のようなコマンドを実行するため、libを$:に加えてくれる。

$ /usr/local/bin/ruby -I.:lib:test -rtest/unit -e "%w[test/test_example.rb].each { |f| require f }" | unit_diff -u

だからtest/test_example.rbに「require 'example'」してもきちんとloadされる。

しかし、autotest with RSpecはlibを$:に加えないようだ。

$ /usr/local/bin/ruby -S /usr/local/lib/ruby/gems/1.8/gems/rspec-1.1.3/bin/spec  spec/example_spec.rb

だからspec/test_spec.rbに「require 'example'」したら

./spec/example_spec.rb:2:in `require': no such file to load -- example (LoadError)

となってしまう。

当然

$ /usr/local/bin/ruby -Ilib -S /usr/local/lib/ruby/gems/1.8/gems/rspec-1.1.3/bin/spec  spec/example_spec.rb

を実行したら、正常にspecを実行してくれる。

仕方ないから.autotestに↓を書いて回避。

Autotest.add_hook :initialize do |at|
  if defined? Autotest::Rspec
    def at.ruby
      "#{super} -Ilib"
    end
  end
end