# vim: syntax=ruby Autotest.add_hook :initialize do |at| at.clear_mappings %w{ doc .svn }.each { |exception| at.add_exception(exception) } at.add_mapping(%r%^lib/interpreter\.rb$%) { at.files_matching %r%^spec/amber/interpreter/.*_spec\.rb$% } at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m| "spec/#{m[1]}_spec.rb" } at.add_mapping(%r%^spec/.*_spec.rb$%) { |filename, _| filename } at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) { at.files_matching %r%^spec/.*_spec\.rb$% } end module Autotest::Growl AUTOTEST_IMAGE_ROOT = "~/.autotest_images" def self.growl title, msg, img, pri=0, sticky="" system "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{sticky}" end def self.growl_fail(output) growl "FAIL", "#{output}", "#{AUTOTEST_IMAGE_ROOT}/fail.png", 2 end def self.growl_pass(output) growl "Pass", "#{output}", "#{AUTOTEST_IMAGE_ROOT}/pass.png" end Autotest.add_hook :ran_command do |at| results = [at.results].flatten.join("\n") if results.include? 'tests' output = results.slice(/(\d+)\s+tests?,\s*(\d+)\s+assertions?,\s*(\d+)\s+failures?(,\s*(\d+)\s+errors)?/) if output $~[3].to_i + $~[5].to_i > 0 ? growl_fail(output) : growl_pass(output) end else output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+not implemented)?/) if output $~[2].to_i > 0 ? growl_fail(output) : growl_pass(output) end end end end