diff --exclude=*~ --exclude=*.orig -Bbaur /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/assertions.rb test/unit/assertions.rb --- /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/assertions.rb Thu Dec 4 22:33:24 2003 +++ test/unit/assertions.rb Tue May 18 17:03:04 2004 @@ -29,7 +29,7 @@ def assert_block(message="assert_block failed.") # :yields: _wrap_assertion do if (! yield) - raise AssertionFailedError.new(message.to_s) + raise AssertionFailedError.new(message.to_s.hl_bold) end end end @@ -39,6 +39,7 @@ def assert(boolean, message=nil) _wrap_assertion do assert_block("assert should not be called with a block.") { !block_given? } + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold] assert_block(build_message(message, " is not true.", boolean)) { boolean } end end @@ -47,8 +48,10 @@ # arguments is important, since a helpful error message is # generated when this one fails that tells you the values # of expected and actual. - public + + PARTS_STYLE= def assert_equal(expected, actual, message=nil) + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < expected but was . @@ -70,6 +73,7 @@ end expected = args.size == 1 ? args.first : args actual_exception = nil + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold] full_message = build_message(message, " exception expected but none was thrown.", expected) assert_block(full_message) do begin @@ -79,6 +83,7 @@ end false end + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual] full_message = build_message(message, " exception expected but was\n?", expected, actual_exception) assert_block(full_message) { args.include?(actual_exception.class) } actual_exception @@ -90,6 +95,7 @@ def assert_instance_of(klass, object, message="") _wrap_assertion do assert_equal(Class, klass.class, "assert_instance_of takes a Class as its first argument") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < expected to be an instance of but was @@ -110,6 +116,7 @@ def assert_kind_of(klass, object, message="") _wrap_assertion do assert(klass.kind_of?(Module), "The first parameter to assert_kind_of should be a kind_of Module.") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, "\nexpected to be kind_of\\?\n but was\n.", object, klass, object.class) assert_block(full_message){object.kind_of?(klass)} end @@ -119,11 +126,13 @@ public def assert_respond_to(object, method, message="") _wrap_assertion do + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold] full_message = build_message(nil, "\ngiven as the method name argument to #assert_respond_to must be a Symbol or #respond_to\\?(:to_str).", method) assert_block(full_message) do method.kind_of?(Symbol) || method.respond_to?(:to_str) end + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < of type @@ -143,6 +152,7 @@ else pattern end + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, " expected to be =~\n.", string, pattern) assert_block(full_message) { string =~ pattern } end @@ -152,6 +162,7 @@ # same instance). public def assert_same(expected, actual, message="") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < with id expected to be equal\\? to @@ -167,6 +178,7 @@ public def assert_operator(object1, operator, object2, message="") _wrap_assertion do + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold] full_message = build_message(nil, "\ngiven as the operator for #assert_operator must be a Symbol or #respond_to\\?(:to_str).", operator) assert_block(full_message){operator.kind_of?(Symbol) || operator.respond_to?(:to_str)} full_message = build_message(message, < e if ((args.empty? && !e.instance_of?(AssertionFailedError)) || args.include?(e.class)) + set_message_parts_style [:hl_bold, :hl_expect] assert_block(build_message(message, "Exception raised:\n?", e)){false} else raise e.class, e.message, e.backtrace @@ -212,6 +225,7 @@ # Passes if !actual.equal?(expected). public def assert_not_same(expected, actual, message="") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < with id expected to not be equal\\? to @@ -224,6 +238,7 @@ # Passes if expected != actual. public def assert_not_equal(expected, actual, message="") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, " expected to be != to\n.", expected, actual) assert_block(full_message) { expected != actual } end @@ -231,6 +246,7 @@ # Passes if !object.nil?. public def assert_not_nil(object, message="") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold] full_message = build_message(message, " expected to not be nil.", object) assert_block(full_message){!object.nil?} end @@ -240,6 +256,7 @@ def assert_no_match(regexp, string, message="") _wrap_assertion do assert_instance_of(Regexp, regexp, "The first argument to assert_no_match should be a Regexp.") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, " expected to not match\n.", regexp, string) assert_block(full_message) { regexp !~ string } end @@ -260,12 +277,14 @@ proc.call caught = false end + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold] full_message = build_message(message, " should have been thrown.", expected_symbol) assert_block(full_message){caught} rescue NameError, ThreadError => error if UncaughtThrow[error.class] !~ error.message raise error end + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, " expected to be thrown but\n was thrown.", expected_symbol, $1.intern) flunk(full_message) end @@ -299,6 +318,7 @@ assert_respond_to(float, :to_f, "The arguments must respond to to_f; the #{name} did not") end assert_operator(delta, :>=, 0.0, "The delta should not be negative") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < and expected to be within @@ -314,6 +334,7 @@ _wrap_assertion do assert_instance_of(Array, send_array, "assert_send requires an array of send information") assert(send_array.size >= 2, "assert_send requires at least a receiver and a message name") + set_message_parts_style [:hl_bold, :hl_expect, :hl_bold, :hl_actual, :hl_bold, :hl_actual, :hl_bold] full_message = build_message(message, < expected to respond to with a true value. @@ -328,6 +349,7 @@ return AssertionMessage.new(head, template, arguments) end + private def _wrap_assertion # :nodoc: @_assertion_wrapped ||= false @@ -357,10 +379,14 @@ AssertionMessage.use_pp = value end + def set_message_parts_style(style_list) + AssertionMessage::Template.parts_style=style_list # if style_messages + end + class AssertionMessage # :nodoc: all @use_pp = true class << self - attr_accessor :use_pp + attr_accessor :use_pp, :parts_style end class Literal @@ -374,6 +400,10 @@ end class Template + @parts_style=nil + class << self + attr_accessor :parts_style + end def self.create(string) parts = (string ? string.scan(/(?=[^\\])\?|(?:\\\?|[^\?])+/m) : []) self.new(parts) @@ -388,8 +418,18 @@ def result(parameters) raise "The number of parameters does not match the number of substitutions." if(parameters.size != count) + if ( Template.parts_style and (Template.parts_style.size != @parts.size)) + raise "The number of style definitions does not match the number of parts" + end params = parameters.dup + if Template.parts_style + @parts.zip(Template.parts_style).collect{|e, s| + tmp = (e == '?' ? params.shift : e.gsub(/\\\?/m, '?')) + tmp.method(s).call + }.join('') + else @parts.collect{|e| e == '?' ? params.shift : e.gsub(/\\\?/m, '?')}.join('') + end end end diff --exclude=*~ --exclude=*.orig -Bbaur /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/error.rb test/unit/error.rb --- /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/error.rb Fri Oct 3 01:38:00 2003 +++ test/unit/error.rb Tue May 18 17:10:38 2004 @@ -44,7 +44,7 @@ # Returns a verbose version of the error description. def long_display backtrace = filter_backtrace(@exception.backtrace).join("\n ") - "Error:\n#@test_name:\n#{message}\n #{backtrace}" + "Error:\n#{@test_name.hl_info}:\n#{message}\n #{backtrace}" end # Overridden to return long_display. diff --exclude=*~ --exclude=*.orig -Bbaur /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/failure.rb test/unit/failure.rb --- /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/failure.rb Fri Oct 3 01:38:00 2003 +++ test/unit/failure.rb Tue May 18 17:08:12 2004 @@ -39,7 +39,7 @@ else "\n [#{location.join("\n ")}]" end - "Failure:\n#@test_name#{location_display}:\n#@message" + "Failure:\n#{@test_name.hl_info}#{location_display.hl_info}:\n#@message" end # Overridden to return long_display. diff --exclude=*~ --exclude=*.orig -Bbaur /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/ui/console/testrunner.rb test/unit/ui/console/testrunner.rb --- /home/mertz/Ruby/releases/ruby-1.8.1/lib/test/unit/ui/console/testrunner.rb Tue May 18 12:14:48 2004 +++ test/unit/ui/console/testrunner.rb Tue May 18 17:14:52 2004 @@ -7,6 +7,33 @@ require 'test/unit/ui/testrunnermediator' require 'test/unit/ui/testrunnerutilities' +begin + require 'text/highlight' + String.highlighter = Text::ANSIHighlighter.new + class String + alias_method :hl_finished, :red + alias_method :hl_expect, :green + alias_method :hl_actual, :red + alias_method :hl_bold, :bold + alias_method :hl_info, :magenta + end +rescue + class String + @@hl_attributes = [ :hl_finished, :hl_expect, :hl_actual, :hl_bold, :hl_info ] + + @@hl_attributes.each { |c| + eval %Q{ + def #{c.to_s} + self + end + } + } + end +end + + + + module Test module Unit module UI @@ -58,7 +85,7 @@ if ( @suite.kind_of?(Module) ) suite_name = @suite.name end - output("Loaded suite #{suite_name}") + output("Loaded suite #{suite_name}".hl_bold) end def create_mediator(suite) # :nodoc: @@ -90,13 +117,13 @@ def finished(elapsed_time) nl - output("Finished in #{elapsed_time} seconds.") + output("Finished in #{elapsed_time} seconds.".hl_finished) @faults.each_with_index do |fault, index| nl - output("%3d) %s" % [index + 1, fault.long_display]) + output(("%3d) %s" % [index + 1, fault.long_display]).hl_bold) end nl - output(@result) + output(@result.to_s.hl_bold) end def test_started(name) @@ -119,7 +146,7 @@ end def output_single(something, level=NORMAL) - @io.write(something) if (output?(level)) + @io.write(something.hl_finished) if (output?(level)) @io.flush end