トップ «前の日記(2008/01/21 (月) ) 最新 次の日記(2008/01/23 (水) )» 編集 RSS feed

HsbtDiary


2008/01/22 (火) [長年日記]

[tDiary][contrib][rake][runit]tDiary-contrib の Rakefile に test タスクを追加した

こんな感じで追加

desc "Run all tests"
task :test do
   require 'test/unit'
   test_files = FileList['test/**/*_test.rb']
   test_files.each do |t|
      sh "ruby #{t}"
   end
end

オプションってあるんだっけ? よくわからない。

test ディレクトリの中身の本体は require とか直してないのでもちろん動かない。この辺も test_helper.rb みたいのを作ってよしなに計らうようにしたほうがいいんだろうなー。誰か (ry

追記

drry さんによるオプション追加コードと rake/testtask 使って書き直した。あと test/unit はここで require しても意味ないので削除。

desc 'Run all tests'
task :test do
   require 'rake/testtask'
   Rake::TestTask.new do |t|
      t.test_files = FileList[File.join('test', '**', '*_test.rb')]
      t.ruby_opts << [File.join(package[:root], 'plugin')].map{|path| "-I#{path}" }.join(' ')
   end
end

TestTask には options と ruby_opts の二個あって最初わけわからんかった。結局本体読んで解決したけど…。こういうのって rdoc とかで調べるのが流儀なんだろうか。

[bookoff][shopping]ブックオフオンラインで大人買い

ハクバノ王子サマ8巻を大人買い。1-6巻は中古で半額だけど、7-8巻は新品で2500円。

これ注文してから到着するまで一週間近くかかるんだけど、これにイライラするのは Amazon の奴隷ってことなんだろうなあ。


ハクバノ王子サマ 8 (ビッグコミックス)
朔 ユキ蔵
小学館
¥722

[rake][tDiary][contrib][rspec][runit]Rakefile の spec/test task がもっと良くなったよ!

ハクバノ王子サマを読んでいるうちに drry さんがさらにエンハンスしてくれた。drry++

Rake::TestTask.new do |t|
   t.libs << File.join(package[:root], 'plugin')
   t.pattern = File.join 'test', '**', '*_test.rb'
end

Spec::Rake::SpecTask.new do |t|
   t.spec_opts  = ['--options', File.join('spec', 'spec.opts')]
end

最初に書いたのからえらく短くなったけど、Rake::TestTask や Spec::Rake::SpecTask 本体の中身を読んでみるとこういうことらしい。

  • desc はデフォルトで"Run specs"とかが定義されているので削除
  • task :name はデフォルトで test と spec で定義されているので削除
  • Rake::TestTask でインクルードディレクトリを指定するときは libs に追加すればいい
  • Rake::TestTask で test_files を指定するよりは pattern で指定すれば内部で勝手に file_list に突っ込んでくれる。test_files も同じ変数に追加されるので同じこと。
  • Spec::Rake::SpecTask の spec_files のパターンはデフォルトで 'spec/**/*_spec.rb' なのでわざわざ指定する必要はない

なるほどなー。知らないことばっか。

本日のツッコミ(全3件) [ツッコミを入れる]
# とおりすがり (2008/01/22 (火) 13:59)

御存じかもしれませんが……。<br>っ【rake/test】

# とおりすがり (2008/01/22 (火) 14:03)

間違えた……。【rake/testtask】でした。

# しばた (2008/01/22 (火) 18:49)

いやいや、全く知りませんでした。Rakefile触りだしたのも昨日から。<br>紹介ありがとうございます。