Gabor Szabo wrote:
> It is obvious but would be nice if would not happen
> 
> use Test::More;
> diag explain $data;
> 
> works nicely, then if I swicth to
> 
> use Test::Most;
> diag explain $data;
> 
> it stops printing as it now requires TEST_VERBOSE
> 
> 
> so Test::Most is not a drop-in replacement for Test::More.

How explain() works is something Ovid and I couldn't reconcile between
Test::Most and Test::More.  However, there is a way to make Test::Most
backward compatible...

sub explain {
    my $void_context = !defined wantarray;

    # Do nothing if we're called in void context and if TEST_VERBOSE is off
    return if !$ENV{TEST_VERBOSE} and !$void_context;

    my @diag = ...all that dumper stuff...
    diag(@diag) if $void_context;
    return @diag;
}

Which is to say, if it's used in void context do the display.  Otherwise
return the diagnostics.

However, this leads to edge cases and I feel this was proposed for Test::More
and I rejected it for just that reason.

    sub test_thing {
         ...
         explain(@stuff);  # looks like void context, but it's not
    }


-- 
On error resume stupid

Reply via email to