Notificaciones de Autospec en Gnome
Últimamente ando muy metido en TDD y ya que he conseguido echar a andar las notificaciones de autospec con Ubuntu (Jaunty 9.04) me gustaría compartirlo por aquí porque el post en el que lo encontré ya no está disponible.
Uso XFCE pero debe funcionar igualmente con Gnome. Este es un screenshot del resultado final:

autospec notification XFCE/Gnome
En primer lugar, necesitas la gema ZenTest. Probablemente ya la tengas:
$ sudo gem install ZenTest $ sudo gem install redgreen
Ahora instala el paquete libnotify-bin:
$ sudo apt-get install libnotify-bin
Y aquí está el truco, crea un fichero llamado ~/.autotest con esto:
#!/bin/ruby require 'redgreen' require 'autotest/timestamp' module Autotest::GnomeNotify def self.notify title, msg, img system "notify-send '#{title}' '#{msg}' -i #{img} -t 3000" end Autotest.add_hook :ran_command do |at| image_root = "~/.autotest_images" results = [at.results].flatten.join("\n") results.gsub!(/\\e\[\d+m/,'') output = results.slice(/(\d+)\sexamples?,\s(\d+)\sfailures?(,\s(\d+)\spending?|)/) full_sentence, green, failures, garbage, pending = $~.to_a.map(&:to_i) if output if failures > 0 notify "FAIL", "#{output}", "#{image_root}/fail.png" elsif pending > 0 notify "Pending", "#{output}", "#{image_root}/pending.png" else notify "Pass", "#{output}", "#{image_root}/pass.png" end end end end
Como puedes ver uso fail.png y pass.png para añadir esos smiles. Puedes descargarlos aquí y copiarlos a ~/.autotest_images/.
Haz que tus tests sean de color verde y pilla una cerveza : )
Update: Añadida la gema redgreen y cambiado “require redgreen” como sugirieron Rodigo Flores y rakk. Gracias!
Update: Corregido > escapado por error en el código. Gracias a Martin y Hunter por los comentarios.
Update: El script ahora soporta ejemplos pendientes. Gracias a Andy.
Update: Eliminado un end que sobraba. Gracias a Andy de nuevo.
English
Español
bunwich
22 Feb, 2011
Another possible resolution when a bunch of warning messages appear:
in ~/autotest line 2, I commented out
#require ‘redgreen’
running autotest now works without having to type in bundle exec autotest
bytesource
20 Mar, 2011
I would like to second the statement made in the above comment:
After commenting out the line *require redgreen*
you are able to run the test by just typing *autotest* in the root of your project.
My system: Kubuntu 10.10
Metajunkie
30 Mar, 2011
I agree. Even though I did ‘gem install redgreen’ – I get a bunch of errors which seem to be telling me that it can’t find redgreen to load it. I tried changing the require line to include the version of redgreen which was loaded (redgreen-1.2.2) but still no joy. when I comment out the require redgreen line – it works.
togume
2 Apr, 2011
Same thing found on Ubuntu 10.10; commenting out the redgreen line makes it work.
Thanks for posting this!
theInstallation
3 Apr, 2011
Thanks for the post and the comments above! I commented require ‘redgreen’ and it worked on linux mint :) Thank you!
vikranth
21 Apr, 2011
commenting #require redgreen worked for me
vikranth
21 Apr, 2011
Thanks..
Wordell
27 Apr, 2011
Worked as is on Fedora 14 Gnome. Took out ‘require redgreen’ and worked also. Gracias.
Ken
23 May, 2011
This didn’t work on Ubuntu 11.04. I get the following error:
/home/egervari/.autotest:1: warning: regex literal in condition
/usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/lib/autotest.rb:311:in `load’: /home/egervari/.autotest:1: unknown regexp options – rby (SyntaxError)
from /usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/lib/autotest.rb:311:in `block in initialize’
from /usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/lib/autotest.rb:310:in `each’
from /usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/lib/autotest.rb:310:in `initialize’
from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-core-2.6.2/lib/autotest/rspec2.rb:11:in `initialize’
from /usr/local/lib/ruby/gems/1.9.1/gems/rspec-rails-2.6.0/lib/autotest/rails_rspec2.rb:31:in `initialize’
from /usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/lib/autotest.rb:241:in `new’
from /usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/lib/autotest.rb:241:in `run’
from /usr/local/lib/ruby/gems/1.9.1/gems/ZenTest-4.5.0/bin/autotest:6:in `’
from /usr/local/bin/autotest:19:in `load’
from /usr/local/bin/autotest:19:in `’
spinlock
9 Jun, 2011
I started getting the error:
uninitialized constant Test::Unit::UI::Console::Diff (NameError)
when I upgraded to ruby 1.9.2-p180 (Ubuntu 10.4). The solution was to make sure autotest knows to use the test-unit gem. I just added the following to my .autotest file:
#!/bin/ruby
gem ‘test-unit’
…
And now autotest is working again :)
Mike
6 Jul, 2011
I am a total noob in rails and am having trouble with getting the notifications to work, i installed the gems and placed the file in my home directory along with the images but how to i get the notifications to appear?
lost
8 Jul, 2011
I can only get autotest to run if I type /var/lib/gems/1.8/bin/autotest. I then runs but does nothing except tell me how long it has been waiting every time I save. Does not tell me anything else.
Mak
24 Jul, 2011
How do you set this up when you are using RVM.
loading autotest/rails_rspec2
/home/mak/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require’: no such file to load — test/unit/ui/console/testrunner (LoadError)
Mak
24 Jul, 2011
Got this to work on ubuntu 11.04, rvm 1.6.24, by commenting out both require lines #2, and #3, but after the notification goes up the terminal does not return to the directory.
Andrew
5 Sep, 2011
Thanks a lot, this worked for me as well. Not sure if it’s needed, but right before I also installed the autotest-notification gem. Then, like Mak recommended(thanks!), I commented both lines #2 and #3 out. I’m on Ubuntu 11.04(with most recent updates), Ruby 1.9.2, using RVM, and Rails 3.1.
Patrick McElwee
20 Oct, 2011
This worked for me on Ubuntu 11.10, Ruby 1.8.7, using RVM, Rails 3.0.7. I never installed the redgreen gem, since it seemed to cause problems for most commenters.
Also, I was getting a ‘No such file’ gems/rspec-core-2.7.0/bin/rspec error. I had to run bundle install -binstubs in my app directory and copy the bin directory that it created into gems/rspec-core-2.7.0 … I believe that issue will be fixed with the next release of the rspec-core gem.
Thanks!
A. Zec
4 Jan, 2012
Thanks folks. This worked on openSUSE 11.3, after commenting out ‘redgreen’
AFajar
7 Jan, 2012
Thanks! Worked for me. Ubuntu 11.10.
Kamal Reddy
14 Jan, 2012
I love u People for the post and the comments
Thanks.