Carlos Brando

Nome do Jogo

Alteração no script do Autotest com Growl

Apenas uma atualização do script deste post.

# ~.autotest
module Autotest::Growl
  FAIL    = -1
  PENDING = 0
  SUCCESS = 1

  FAIL_IMAGE    = "/Users/carlosbrando/.autotest_images/fail.png"
  SUCCESS_IMAGE = "/Users/carlosbrando/.autotest_images/pass.png"

  Autotest.add_hook :ran_command do |at|
    result = at.results.last
    if result
      examples = result =~ /(\d+) example/ ? $1.to_i : 0
      failures = result =~ /(\d+) failure/ ? $1.to_i : 0
      pendings = result =~ /(\d+) pending/ ? $1.to_i : 0

      unless last_result_was(examples, failures, pendings)
        msg = "#{examples} example#{ 's' if examples != 1}, #{failures} failure#{ 's' if failures != 1}, #{pendings} pending"

        if failures > 0
          growl "FAIL", msg, FAIL_IMAGE, 2
        else
          growl "Pass", msg, SUCCESS_IMAGE
        end
      end

      code = (failures > 0) ? 31 : (pendings > 0) ? 33 : 32
      puts "\e[#{code}m#{'=' * 80}\e[0m\n\n"
    end
  end

  class << self
    def growl(title, msg, img = SUCCESS_IMAGE, pri = 0)
      system "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title}"
    end

    def last_result_was(examples, failures, pendings)
      @last_result ||= [0, 0, 0]

      if @last_result == [examples, failures, pendings]
        true
      else
        @last_result = [examples, failures, pendings]
        false
      end
    end
  end
end

http://pastie.caboo.se/188205

Este script está preparado apenas para o RSpec, se alguém alterá-lo, não se esqueça de me avisar!

Eu tive de mudar o script, porque ele ficava o tempo todo exibindo mensagens no Growl. Agora uma mensagem só é exibida quando algo mudou desde a última mensagem.

O Alexandre fez algumas alterações no script anterior para funcionar no Ubuntu com Libnotify.

Comments