# File lib/test/unit/notify.rb, line 135 def available? not command.nil? end
# File lib/test/unit/notify.rb, line 139 def command @@command ||= commands.find {|command| command.available?} end
# File lib/test/unit/notify.rb, line 143 def commands [NotifySend.new, Growlnotify.new] end
# File lib/test/unit/notify.rb, line 150 def initialize @theme = "kinotan" end
# File lib/test/unit/notify.rb, line 154 def attach_to_mediator(mediator) mediator.add_listener(UI::TestRunnerMediator::STARTED, &method(:started)) mediator.add_listener(UI::TestRunnerMediator::FINISHED, &method(:finished)) end
# File lib/test/unit/notify.rb, line 165 def finished(elapsed_time) command = self.class.command return if command.nil? title = "%s [%g%%] (%gs)" % [@result.status, @result.pass_percentage, elapsed_time] parameters = { :expire_time => 5, :icon => guess_suitable_icon, :urgency => urgency, :title => title, :message => @result.summary, } command.run(parameters) end
# File lib/test/unit/notify.rb, line 161 def started(result) @result = result end
# File lib/test/unit/notify.rb, line 183 def guess_suitable_icon icon_dir = ICON_DIR + @theme status = @result.status icon_base_names = [status] if @result.passed? icon_base_names << "pass" else case status when "failure" icon_base_names << "error" when "error" icon_base_names << "failure" end end icon_base_names << "default" icon_base_names.each do |base_name| icon = icon_dir + "#{base_name}.png" return icon if icon.exist? end nil end
# File lib/test/unit/notify.rb, line 205 def urgency if @result.passed? "normal" else "critical" end end