Cobalt Edge

 
« Back to blog

Have Autotest speak to you

Update: the first .autotest I had in here was bogus, sorry about that. The .autotest file contents below work properly with Rspec tests at least.

I make extensive use of ZenTest's Autotest to constantly watch my test suite and ensure my app's tests are passing on my dev box/during development. Historically I've used Growl/growlnotify to get little popup notices indicating if my tests passed or failed. That's nice, and I've done the enhancements that add graphics and style it nicely, etc. But, in reality, I'm not always looking and sometimes don't see the messages. Plus, they can be somewhat distracting.

So, I've switched to using the handy say tool on the Mac (on Linux I think you could use "espeak", no clue on Windows, but then, uh, well, why are you doing dev work on Windows?! ;-)

The speaking is nice - I hear it, but don't get visually distracted. I use different voices for tests passed vs. failed too. This may not work great if you work in a cube farm, or even a cafe, but here at home, or in your own office, I think it's great. Here's my .autotest file as an example:

require 'autotest/redgreen'module Autotest::Growl  def self.growl(title, msg, img, pri=0, stick="")    system "/usr/local/bin/growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{stick}"   end    Autotest.add_hook :ran_command do |at|    results = at.results.last    unless results.nil?      output = results[/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/]      if output        failures = $~[2].to_i        pending = $~[4].to_i      end      if failures > 0        `/usr/bin/say -v Zarvox "you broke the code"`      elsif pending > 0        `/usr/bin/say -v Alex "Tests passed, with some pending"`      else        unless at.tainted          `/usr/bin/say -v Victoria "all tests passed"`        else          `/usr/bin/say -v Victoria "tests passed"`        end      end    end  endend

To see what voices your system has available, open the Speech system preference pane, pull down "System Voice" and select "Show More Voices" to see the full list.

Comments (0)

Leave a comment...