1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# vim: syntax=ruby
# From http://pastie.caboo.se/115692, linked from rickbradley
require 'autotest/redgreen'
require 'autotest/timestamp'
Autotest.send(:alias_method, :real_find_files, :find_files)
Autotest.send(:define_method, :find_files) do |*args|
real_find_files.reject do |k, v|
if (ENV['AUTOTEST'] and !ENV['AUTOTEST'].empty?)
!Regexp.new(ENV['AUTOTEST']).match(k)
end
end
end
module Autotest::Growl
def self.growl title, msg, img, pri=0, sticky=""
system "growlnotify -n autotest --image #{img} -p #{pri} -m #{msg.inspect} #{title} #{sticky}"
end
Autotest.add_hook :ran_command do |at|
image_root = "~/.autotest_images"
results = [at.results].flatten.join("\n")
output = results.slice(/(\d+)\stests,\s(\d+)\sassertions,\s(\d+)\sfailures,\s(\d+)\serrors/)
if output
if $~[3].to_i > 0 || $~[4].to_i > 0
growl "FAIL", "#{output}", "#{image_root}/fail.png", 2
else
growl "Pass", "#{output}", "#{image_root}/pass.png"
end
end
output = results.slice(/(\d+)\sexamples,\s(\d+)\sfailures?(,\s+\d+\s+pending)?/)
if output
if $~[2].to_i > 0 || $~[4].to_i > 0
growl "FAIL", "#{output}", "#{image_root}/fail.png", 2
else
growl "Pass", "#{output}", "#{image_root}/pass.png"
end
end
end
end
|