Re: [Perlunit-devel] oh dear
Status: Beta
Brought to you by:
mca1001
|
From: Adam S. <ad...@sp...> - 2002-01-08 19:26:55
|
Piers Cawley (pdc...@bo...) wrote:
> Adam Spiers <ad...@sp...> writes:
[how to fix T::U::Assertion::CodeRef breakage]
> > - Change T::U::Assertion::CodeRef::do_assertion to rethrow die()
> > exceptions as Test::Unit::Failures. Almost ideal, except for the
> > serious flaw that syntax errors in the coderef turn up as
> > failures.
> >
> > - Change the semantics of T::U::Assertion::CodeRefs so that on
> > failure they return($failure_msg) rather than die($failure_msg),
> > and on success they return zero (a la shell)? That would be very
> > easy to implement, although confusing in that it's the exact
> > opposite of Perl's notions of true/false.
> >
> > - Change the semantics of T::U::Assertion::CodeRefs so that on
> > failure they throw a Test::Unit::Failure rather than a die(). In
> > that case, it would be better to drop the current requirement that
> > a coderef has to return true to indicate success, since it would
> > no longer be necessary.
> >
> > The third option is my preference.
>
> Me too. And I can't for the life of me remember *why* I did it any
> different.
Done. This means the new way to do coderef assertions is
$self->assert(sub {
$_[0] == $_[1]
or $self->fail("Expected $_[0], got $_[1]");
}, 1, 2);
I've also added two new assertions: assert_multi() and assert_raises().
See the CVS docs for more info.
|