From: rking Date: 2007-08-10T16:20:04+09:00 Subject: Re: Changing Test::Unit::Assertion messages I know you said, "Nevermind," but I wanted to add this bit: Don't forget about the third parameter to the assert messages. It is very useful for either giving hints about the meaning of the assertion, or to diagnose what went wrong, either of which can be helpful for posterity. It's important to know that assert_match(pat,obj) essentially matches `obj.to_s =~ pat`. The output gives the impression that it's matching `obj.inspect =~ pat`, but that's just sort of an artifact of AssertionMessage#convert. Here's some code/output: require 'test/unit' class Sampson def initialize @riddle = '"Out of the eater, something to eat;' + 'out of the strong, something sweet."' end class PhilistineTest < Test::Unit::TestCase def test_quiz nazirite = Sampson.new pat = %r/eater/ assert_match(pat, nazirite, "#{nazirite} !~ /#{pat}/") end end end Loaded suite /home/rking/src/scrap Started F Finished in 0.047188 seconds. 1) Failure: test_quiz(Sampson::PhilistineTest) [/home/rking/src/scrap.rb:36]: # !~ /(?-mix:eater)/. <#> expected to be =~ . 1 tests, 1 assertions, 1 failures, 0 errors See that line immediately after the test_quiz(...) line? That's my custom-provided line. It's kind of buried, but having it is at least clearer than the lines below, which are a little misleading. HTH, -rking