in reply to Re: The wonders of Test::More
in thread The wonders of Test::More

ok $exp eq $got or diag explain [$exp, $got];

Yeah, that's not a bad idea.
I don't get much sense from "or diag explain [$exp, $got]" when the variables are Math::MPFR objects:
C:\>perl -MMath::MPFR -MTest::More -e "$got=Math::MPFR->new(2); $exp= +Math::MPFR->new(2); ok($got != $exp) or diag explain [$exp, $got]; d +one_testing();" not ok 1 # Failed test at -e line 1. # [ # bless( do{\(my $o = 46472664)}, 'Math::MPFR' ), # bless( do{\(my $o = 46474008)}, 'Math::MPFR' ) # ] 1..1 # Looks like you failed 1 test of 1.
but I could instead use something like or warn "$got == $expected" to provide a more meaningful diagnostic.

There's probably quite a few places in my test scripts where this blow-up could occur, but the blow-up only happens with the overloaded "!=" operator, and then only if the test fails.

Cheers,
Rob

Replies are listed 'Best First'.
Re^3: The wonders of Test::More
by haukex (Archbishop) on May 22, 2022 at 04:45 UTC
    I could instead use something like or warn "$got == $expected"

    That works, as well as simply naming the test e.g. "$exp eq $got", or I sometimes use Data::Dump's pp to get properly quoted stings (since explain doesn't do that for simple strings).