is() supresses "Use of uninitalized value" warnings because its useful to
do things like:

        is( $foo, undef );

which provides more information than

        ok( !defined $foo );

because if it is defined its nice to know what the value is.

Similarly is_deeply() suppresses undef warnings.

cmp_ok() and like() also supress undef warnings... well all warnings
actually and that's a problem.  Not having warnings meant I never noticed
things like:

        cmp_ok( $overloaded_object, '==', 42 );

was actually comparing the stringified version of $overloaded_object and
not the numerified version.  Since warnings were supressed I never got
the "Argument "blah" isn't numeric" warning.

It seems pretty clear to me that most warnings should not be supressed.
But what about uninit warnings, specificly?  Is there any utility to
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.


-- 
Michael G Schwern     [EMAIL PROTECTED]     http://www.pobox.com/~schwern
Don't try the paranormal until you know what's normal.
        -- "Lords and Ladies" by Terry Prachett

Reply via email to