autotestでの例外ルール記述
autotestについては詳しく説明しませんが、
テストに該当するであろうファイルを予測し、
タイムスタンプが変更されると、自動でテストを実行してくれるツールです。
ただ、デフォルトでは実行したディレクトリの全てのファイルに対して
タイムスタンプのウォッチを行うので、負荷はもちろんのこと、
例えばEmacsでflymakeなんかを使っていると、
ファイルを編集しただけで一時ファイルの生成/変更を検知し、
テストを実行してしまう、なんてこともあります。っていうかありました。
そこで今回は無視(例外)ルールの記述について書いてみます。
.autotest:
Autotest.add_hook :initialize do |autotest| ignores = %w{.git .autotest .rspec coverage README.markdown} ignores.each do |exception| autotest.add_exception(exception) end end Autotest.add_hook :run do |autotest| autotest.exceptions = /.*_flymake\.rb$|.*\.yml$/ end
ずばり現在使っているのがこれです。
使えません。修正バージョンは下のほうに。
Rails用ではないので、その辺は改造して欲しいところではありますが……。
とりあえず :initialize フックで静的に無視するファイルを指定しています。
コードカバレッジやリポジトリの差分ファイルを全てチェックされたのでは
精神衛生上よくないというものです。
次に :run フックで正規表現による無視ルールを追加しています。
調べが足りないと思うんですが、 :initialize フックでは正規表現は使えない(?)
ので、ひとまずはこれでよろしくやってくれているので満足ではあります。
修正版。
Autotest.add_hook :initialize do |autotest| %w{.git .autotest .rspec coverage README.markdown}.each do |exception| autotest.add_exception(exception) end autotest.add_exception(/.*\.yml$/) autotest.add_exception(/.*_flymake\.rb$/) end
大嘘ぶっこいてました、 :initialize フックで正規表現使えました。
flymakeの一時ファイルに関してはまだちょっとわからないので、
また追記するかも知れません。