Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Changing Test::Unit::Assertion messages

Reply
Thread Tools

Changing Test::Unit::Assertion messages

 
 
Curt Sampson
Guest
Posts: n/a
 
      08-10-2007
In many of my tests, I do something along the lines of

assert_match(/foobar/, content)

When the assertion fails, it prints out something resembling the
inspect of the content. In some cases, it's much more readable to print
something different. How do I do that for this one case, but leave the
default behaviour for other cases in the program.

I thought it would be as simple as overriding the inspect method on
content, but that doesn't do the trick.

I've been through the internals of Test::Unit::Assertion, and it seems
to frustrate this effort.

cjs
--
Curt Sampson <(E-Mail Removed)> +81 90 7737 2974
http://www.starling-software.com
The power of accurate observation is commonly called cynicism
by those who have not got it. --George Bernard Shaw

 
Reply With Quote
 
 
 
 
Curt Sampson
Guest
Posts: n/a
 
      08-10-2007
On Fri, 10 Aug 2007, Curt Sampson wrote:

> I thought it would be as simple as overriding the inspect method on
> content, but that doesn't do the trick.


Never mind, this does actually work if I set it in a different place.
There's some weird thing happening between defining inspect on an object
inside or outside a block to which a custom assert method yields, but I
can't be bothered to debug it.

cjs
--
Curt Sampson <(E-Mail Removed)> +81 90 7737 2974
http://www.starling-software.com
The power of accurate observation is commonly called cynicism
by those who have not got it. --George Bernard Shaw

 
Reply With Quote
 
 
 
 
rking
Guest
Posts: n/a
 
      08-10-2007
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:hilistineTest) [/home/rking/src/scrap.rb:36]:
#<Sampson:0xb7ca2c74> !~ /(?-mix:eater)/.
<#<Sampson:0xb7ca2c74
@riddle=
"\"Out of the eater, something to eat;out of the strong, something
sweet.\"">> expected to be =~
</eater/>.

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

 
Reply With Quote
 
Phlip
Guest
Posts: n/a
 
      08-11-2007
rking wrote:

> assert_match(pat, nazirite, "#{nazirite} !~ /#{pat}/")


> 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.


That's why I wrote assert_raise_message:

http://tinyurl.com/23tlu5

When inventing a new assertion - maybe an arbitrarily complex one - you
can't leave its user with "nil should not be nil". You should reflect
anything you know into the diagnostic. All assertions should take a
'message' field, for the user to add to the explanation.

When a test fails, maximizing the information output helps the user rapidly
decide whether to debug the failure, or just revert the code.

--
Phlip
http://www.oreilly.com/catalog/9780596510657/
"Test Driven Ajax (on Rails)"
assert_xpath, assert_javascript, & assert_ajax


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
There are no more messages on this topic. All messages in this topic may have expired or been deleted Coach 02 Computer Support 1 03-12-2007 03:44 PM
absence of router advertisment messages in reponse to roiuter solicitation messages sonia sainani Software 0 10-20-2006 09:20 AM
i sent 2 messages about double messages monique Computer Support 0 11-27-2004 07:18 PM
will all these messages cause a problem . I am a new subscriber and my computer is downloading 100,000 messages. Will this cause any kind of a problem with my ability to store other items?? Camille White Camille White Computer Support 9 11-08-2004 01:13 AM
Changing colour of validator error messages Helen ASP .Net 2 09-06-2004 09:41 PM



Advertisments