Created
August 27, 2011 22:01
-
-
Save darylf/1175908 to your computer and use it in GitHub Desktop.
Combining Watchr, Spork, and Growl for Ruby on Rails testing.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Combined from: | |
# [1] http://www.rubyinside.com/how-to-rails-3-and-rspec-2-4336.html | |
# [2] https://gist.github.com/600976 | |
unless defined?(GROWL) | |
$stderr.sync=true | |
$stdout.sync=true | |
ENV["WATCHR"] = "1" | |
GROWL=`which growlnotify`.chomp | |
IMAGE_DIR=File.expand_path("~/.watchr_images/") | |
SPORK=true | |
#assumes we are running from the rails root | |
#Dir.chdir(File.dirname(__FILE__)) | |
end | |
def growl(message,title=nil,image=nil) | |
return if GROWL.empty? | |
title ||= "Watchr Test Results" | |
message.gsub! /\[[0-9]+?m/, '' | |
image ||= message.include?('0 failures, 0 errors') ? "#{IMAGE_DIR}/pass.png" : "#{IMAGE_DIR}/fail.png" | |
options = "-n Watchr --image '#{image}' -m '#{message}' '#{title}'" | |
puts "#{GROWL} #{options}" | |
run "#{GROWL} #{options}" | |
end | |
def run(cmd,verbose=false) | |
# puts | |
puts("# #{cmd}") | |
# puts | |
ret=[] | |
IO.popen(cmd) do |output| | |
while line = output.gets do | |
puts line if verbose | |
ret << line | |
end | |
end | |
ret #join("\n") | |
end | |
def generate_message(result) | |
#result.last | |
#we have messages turned off | |
#need to parse results to get something close | |
failures=result.count { |s| s =~/Failure/ } | |
errors=result.count { |s| s =~/Error/ } | |
"#{failures} failures, #{errors} errors" | |
end | |
def run_spec(file) | |
unless File.exist?(file) | |
puts "#{file} does not exist" | |
return | |
end | |
puts "Running #{file}" | |
results = run "bundle exec rspec #{file}" | |
growl generate_message(results) | |
puts | |
end | |
watch("spec/.*/*_spec.rb") do |match| | |
run_spec match[0] | |
end | |
watch("app/(.*/.*).rb") do |match| | |
run_spec %{spec/#{match[1]}_spec.rb} | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Growl works great, but the images aren't showing up even though they're in the "~/.watchr_images/" folder. Any ideas?