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

Hugo here, I was typing up a response to this last night when my computer died stone dead with a strong whiff of ozone. I'll be offline for a few days until I can get that fixed.

I found that the issue could easily be replicated with something roughly like the below. (This is from memory, I'm in a local hotel to write this.) Please verify and report to the Test::More bug queue.

The problem appears to be occur when a) the '!=' test fails, b) the object(s) being tested have '!=' and '""' overloading but not '0+'. I have not checked if both arguments need to be objects, nor if other comparators are affected.

use Test::More; package Ov { use overload ( '""' => sub { 'x' }, '!=' => sub { 0 }, }; }; cmp_ok(bless({}, 'Ov'), '!=', bless({}, 'Ov'), 'failing test'); done_testing();

Replies are listed 'Best First'.
Re^4: The wonders of Test::More
by syphilis (Archbishop) on May 23, 2022 at 00:28 UTC
    I was typing up a response to this last night when my computer died stone dead with a strong whiff of ozone

    Undoubtedly the result of having subjected the machine to this insidious bug ;-)

    Please verify and report to the Test::More bug queue

    With a small typo fixed, your script demos the problem correctly - and I've tested that the addition of '0+' overloading to that demo avoids the issue.
    ( There was a '}' that needed to be replaced with a ')'. )

    I have now reported the bug.

    Cheers,
    Rob

      I have now reported the bug.

      Thanks, I've commented there. Happily the ozone was readily diagnosed as a PSU failure (does Antarctica know?), so I only had 40 hours discomputered.