Shigeaki Matsumura

CEO of Backflip180, LLC.

spork+guard+test/unitでgrowlにnotifyされるようにする

先日、sporkguardでtest/unitで書かれたテストコードを自動実行する環境を構築したのですが、なぜかgrowlにnotifyされません。 Guardfileには次のように:drdオプションを指定しています。

notification :growl

guard :test, :drb => true do
  ...
end

ネット上にもあまり情報がないようなので、コードを追って解決策を捻り出しました。 test/test_helper.rbのSpork.preforkに次のようなコードを追加します。

Spork.prefork do
  ...

  require 'guard/test/notifier'
  require 'test/unit/ui/console/testrunner'

  class Test::Unit::UI::Console::TestRunner
    alias :old_finished :finished
    def finished(elapsed_time)
      send :old_finished, elapsed_time
      ::Guard::Test::Notifier.notify(@result, elapsed_time)
    end 
  end
end

Test::Unit::UI::Console::TestRunnerクラスをオープンしてfinishedメソッドの最後に実行結果をnotifyするようにします。 これでgrowlにnotifyされるようになりました。