test-unit/lib/test/unit/failure.rb in activegroonga-0.0.7 vs test-unit/lib/test/unit/failure.rb in activegroonga-1.0.0
- old
+ new
@@ -9,20 +9,27 @@
# Encapsulates a test failure. Created by Test::Unit::TestCase
# when an assertion fails.
class Failure
attr_reader :test_name, :location, :message
-
+ attr_reader :expected, :actual, :user_message
+ attr_reader :inspected_expected, :inspected_actual
+
SINGLE_CHARACTER = 'F'
LABEL = "Failure"
# Creates a new Failure with the given location and
# message.
- def initialize(test_name, location, message)
+ def initialize(test_name, location, message, options={})
@test_name = test_name
@location = location
@message = message
+ @expected = options[:expected]
+ @actual = options[:actual]
+ @inspected_expected = options[:inspected_expected]
+ @inspected_actual = options[:inspected_actual]
+ @user_message = options[:user_message]
end
# Returns a single character representation of a failure.
def single_character_display
SINGLE_CHARACTER
@@ -49,10 +56,23 @@
# Overridden to return long_display.
def to_s
long_display
end
+
+ def critical?
+ true
+ end
+
+ def diff
+ @diff ||= compute_diff
+ end
+
+ private
+ def compute_diff
+ Assertions::AssertionMessage.delayed_diff(@expected, @actual).inspect
+ end
end
module FailureHandler
class << self
def included(base)
@@ -62,15 +82,21 @@
private
def handle_assertion_failed_error(exception)
return false unless exception.is_a?(AssertionFailedError)
problem_occurred
- add_failure(exception.message, exception.backtrace)
+ add_failure(exception.message, exception.backtrace,
+ :expected => exception.expected,
+ :actual => exception.actual,
+ :inspected_expected => exception.inspected_expected,
+ :inspected_actual => exception.inspected_actual,
+ :user_message => exception.user_message)
true
end
- def add_failure(message, backtrace)
- failure = Failure.new(name, filter_backtrace(backtrace), message)
+ def add_failure(message, backtrace, options={})
+ failure = Failure.new(name, filter_backtrace(backtrace), message,
+ options)
current_result.add_failure(failure)
end
end
module TestResultFailureSupport