Linux環境でautotest

Ubuntuのデスクトップ環境でscreenを使わずに、
screenでやっているように常にautotestの結果を表示させたかったのを
いろいろやってみたので晒してみる。

やってみたのは、以下の画像。

使ったのは、mumblesというLinuxデスクトップに
MacGrowlぽいのを表示するアプリを利用した。

インストールは、Ubuntuだとmumblesのページからdebパッケージを取ってきて
$ sudo dpkg -i mumbles_0.4-1_all.deb
したけど、パッケージが足りなかったので、先にこっちをする。
$ sudo aptitude install python-setuptools

これで、アプリケーションのメニューにmemblesがあるので実行すると
右上のパネルに緑の丸のアイコンが表示される。

端末から
$ mumbles-send "hogehoge" "fugafuga"
とするとポップアップでメッセージが表示される。

これを使って、autotestのメッセージを表示させてみる。

他の人の.autotestの設定を色々見て作ったのが以下の.autotest

Autotest::HOOKS.delete(:interrupt)

class Autotest::Mumbles
  def self.mumbles(msg1, msg2="")
    `mumbles-send "#{msg1}" "#{msg2}"`
  end

  Autotest.add_hook :initialize do |at|
    mumbles "初期化中"
  end

  Autotest.add_hook :run do |at|
    mumbles "開始"
  end

  Autotest.add_hook :ran_command do |at|
    results = [at.results].flatten.join("\n")
    output = results.slice(/(\d+)\sexamples?,\s*(\d+)\s.*failures?(?:,\s*(\d+)\s.*pendings?)?/)
    if output
      ex,fail,pend = $~.captures.map {|e| e.to_i}
      if 0 < fail
        mumbles "RED", "FAIL #{ex}ex, F:#{fail} "
      elsif 0 < pend
        mumbles "YELLW", "Pend #{ex}ex, F:#{fail} P:#{pend}"
      else
        mumbles "GREEN", "All Green #{ex}ex"
      end
    end
  end

  Autotest.add_hook :quit do |at|
    mumbles "終了"
  end
end