lib/autotest_notification.rb in urubatan-autotest-notification-1.0.1 vs lib/autotest_notification.rb in urubatan-autotest-notification-1.4.0

- old
+ new

@@ -1,74 +1,69 @@ $:.unshift(File.dirname(__FILE__)) -require 'autotest_notification/linux' -require 'autotest_notification/mac' -require 'autotest_notification/windows' -require 'autotest_notification/cygwin' +%w{ linux mac windows cygwin doom }.each { |x| require "autotest_notification/#{x}" } module AutotestNotification - FAIL = -1 - PENDING = 0 - SUCCESS = 1 - - EXPIRATION_IN_SECONDS = 3 - IMAGES_DIRECTORY = File.expand_path(File.dirname(__FILE__) + "/../images/") SUCCESS_IMAGE = "#{IMAGES_DIRECTORY}/pass.png" FAIL_IMAGE = "#{IMAGES_DIRECTORY}/fail.png" - Autotest.add_hook :ran_command do |at| + EXPIRATION_IN_SECONDS = 3 + Autotest.add_hook :ran_command do |at| result = at.results.is_a?(Array) ? at.results.last : at.results.split("\n").last if result + %w{ test assertion error example pending failure }.each { |x| instance_variable_set "@#{x}s", result[/(\d+) #{x}/, 1].to_i } - # Test::Unit - tests = result =~ /(\d+) test/ ? $1.to_i : 0 - assertions = result =~ /(\d+) assertion/ ? $1.to_i : 0 - errors = result =~ /(\d+) error/ ? $1.to_i : 0 - - # RSpec - examples = result =~ /(\d+) example/ ? $1.to_i : 0 - pendings = result =~ /(\d+) pending/ ? $1.to_i : 0 - - # Shared - failures = result =~ /(\d+) failure/ ? $1.to_i : 0 - - code = 32 - msg = if result =~ /test/ - code = 31 if failures > 0 || errors > 0 - "#{pluralize('test', tests)}, #{pluralize('assertion', assertions)}, #{pluralize('failure', failures)}, #{pluralize('error', errors)}" + case result + when /test/ + code = 31 if @failures > 0 || @errors > 0 + msg = unit_test_message(@tests, @assertions, @failures, @errors) + when /example/ + code = (@failures > 0) ? 31 : (@pendings > 0) ? 33 : 32 + msg = rspec_message(@examples, @failures, @pendings) else - code = (failures > 0) ? 31 : (pendings > 0) ? 33 : 32 - "#{pluralize('example', examples)}, #{pluralize('failure', failures)}, #{pendings} pending" + code = 31 + msg = "1 exception occurred" + @failures = 1 end - if failures > 0 || errors > 0 - notify "FAIL", msg, FAIL_IMAGE, failures, 2 + if @failures > 0 || @errors > 0 + notify "FAIL", msg, FAIL_IMAGE, @tests + @examples, @failures + @errors, 2 else - notify "Pass", msg, SUCCESS_IMAGE, failures + notify "Pass", msg, SUCCESS_IMAGE, @tests + @examples end puts "\e[#{code}m#{'=' * 80}\e[0m\n\n" end end class << self - def notify(title, msg, img = SUCCESS_IMAGE, failures = 0, pri = 0) + def notify(title, msg, img = SUCCESS_IMAGE, total = 1, failures = 0, pri = 0) + + img = Doom.image(total, failures) if DOOM_EDITION + case RUBY_PLATFORM when /linux/ - Linux.notify(title, msg, img) + Linux.notify(title, msg, img, total, failures) when /darwin/ - Mac.notify(title, msg, img, failures, pri) + Mac.notify(title, msg, img, total, failures, pri) when /cygwin/ Cygwin.notify(title, msg, img) when /mswin/ Windows.notify(title, msg, img) end end def pluralize(text, number) "#{number} #{text}#{'s' if number != 1}" end + + def unit_test_message(tests, assertions, failures, errors) + "#{pluralize('test', tests)}, #{pluralize('assertion', assertions)}, #{pluralize('failure', failures)}, #{pluralize('error', errors)}" + end + + def rspec_message(examples, failures, pendings) + "#{pluralize('example', examples)}, #{pluralize('failure', failures)}, #{pendings} pending" + end end end -