Autotest desde linux como en una Mac

by Gastón Ramos

Mirando algunos videos de rspec y autotest, noté que al correr los tests, en la pantalla de la notebook del video salían unos hermosos mensajes con transparencias, investigando un poco encontré que esto se hace con un programa llamado growl que sólo viene para usuarios de Mac OS X :( luego de tal desilusión comencé a buscar una alternativa en GNU/Linux … sí! hay un programa llamado aosd_cat que sirve para mostrar mensajes de texto UTF8 en la pantalla, vamos al grano:

apt-get install aosd_cat

Para probarlo podemos abrir una consola y ejecutar:

 echo "Probando..." | aosd_cat   --back-color=black  \ 
          --fore-color=red \
          --back-opacity=135  --padding=50

Ahora vamos a configurar autotest para que use aosd_cat

editamos el archivo ~/.autotest y ponemos lo siguiente:

module Autotest::Growl
  def self.aosd_cat title, msg, color
    params = "--back-color=black --fade-in=20 --fade-out=100 \
                   --fore-color=#{color} --back-opacity=200 \
                   --padding=30 \  --shadow-offset=0 \
                   --x-offset=0 --y-offset=0"

    system "echo \"#{title} #{msg} \" | aosd_cat #{params}"

  end

  Autotest.add_hook :run do  |at|

    aosd_cat "Autotest running", "Started", "Orange"

  end

  Autotest.add_hook :ran_command do |at|
    results = [at.results].flatten.join("\n")
    output  = results\
    .slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)
    if output
      if $~[2].to_i > 0
        aosd_cat "FAIL !!!", "#{output}", "red"
      else
        color = output =~ /[1-9]\spending?/ ? "yellow" : "green"
        aosd_cat "Pass", "#{output}", "#{color}"
      end

  end
end

Listo, ya podemos usar autotest y ver los mensajes como en una mac ;)

autotest path-al-proyecto/

Les dejo un screencast para que vean como quedó.