On Sat, Jul 02, 2005 at 08:40:48PM +0100, Nicholas Clark wrote:
> > something like:
> >
> > like( $foo, qr/.../ );
> >
> > and:
> >
> > cmp_ok( $foo, 'eq', $bar );
> >
> > warning about $foo being undefined? Especially since the test diagnostics
> > will let you know about what was undef.
>
> I'm not sure. For the specific example of cmp_ok with 'eq', then because
> the programmer has chosen that over is(), it seems fair that he/she made
> an explicit choice that $foo being undef was an acceptable match for $bar
> being an empty string. (Not so sure about the other 13 comparison operators)
Yeah, 'eq' was a bad choice as its unlikely to be used. Something like:
cmp_ok( $foo, '>=', $bar );
In which case I think that yes, you want a normal undef warning because...
cmp_ok( 2, '>=', undef );
passes.
> I think I'd prefer like to fail (distinct from warning) if $foo is undef,
> given that the expected regexp may well intentionally match an empty string.
No, I'm not going to try an second guess the intention of the tester. If
they craft a match which matches against undef then the test passes. But
a warning serves its purpose of "hey, are you SURE you wanted this?" and
they can choose to supress it.
Now all I have to do is figure a clever way to supress all but uninit
warnings without using warnings.pm.
--
Michael G Schwern [EMAIL PROTECTED] http://www.pobox.com/~schwern
Ahh email, my old friend. Do you know that revenge is a dish that is best
served cold? And it is very cold on the Internet!