class Towel::Minitest::Reporter
Public Class Methods
new(options)
click to toggle source
# File lib/towel/minitest/reporter.rb, line 5 def initialize(options) @session = Towel::Session.new @stdout = nil @stderr = nil @previous_stdout = nil @previous_stderr = nil @cancelled = false end
Public Instance Methods
prerecord(klass, name)
click to toggle source
# File lib/towel/minitest/reporter.rb, line 35 def prerecord(klass, name) context = @session.create_result( klass.to_s, name, display_name: result_name(klass, name) ) @stdout.context = context @stderr.context = context end
record(result)
click to toggle source
# File lib/towel/minitest/reporter.rb, line 46 def record(result) @stdout.context = nil @stderr.context = nil if result.passed? state = Towel::V1alpha::ResultState::SUCCESS elsif result.skipped? state = Towel::V1alpha::ResultState::SKIPPED elsif result.error? state = Towel::V1alpha::ResultState::ERROR else state = Towel::V1alpha::ResultState::FAILURE end duration = nil if !result.skipped? duration = result.time end description = nil if !result.failures.empty? description = result.failures.first.message end @session.update_result( result.klass, result.name, state: state, duration: duration, description: description ) end
report()
click to toggle source
# File lib/towel/minitest/reporter.rb, line 79 def report $stdout = @previous_stdout $stderr = @previous_stderr if @cancelled @session.cancel_invocation else @session.finish_invocation end end
start()
click to toggle source
# File lib/towel/minitest/reporter.rb, line 14 def start url = @session.create_invocation puts "View test results at #{url}" # Register a cancellation handler old_handler = Signal.trap("INT") do @cancelled = true if old_handler.respond_to?(:call) old_handler.call else raise Interrupt end end # Capture logs @previous_stdout = $stdout $stdout = @stdout = Towel::LogIO.new(@session.create_log("STDOUT")) @previous_stderr = $stderr $stderr = @stderr = Towel::LogIO.new(@session.create_log("STDERR")) end
Private Instance Methods
result_name(klass, name)
click to toggle source
Clean up names from Minitest::Spec
# File lib/towel/minitest/reporter.rb, line 93 def result_name(klass, name) if defined?(::Minitest::Spec) && klass.ancestors.include?(::Minitest::Spec) name.sub(/^test_\d{4}_/, "") else name end end