colorize( $big_long_string )

Turns a multi-line input string into its corresponding array of lines, with colorized transformations.

<text> gets turned to filename color.
{text} gets turned to line number color.
(text) gets turned to highlight color.

msg( [@args] )

Returns a basic diagnostic string based on the arguments passed in. It is not strictly accurate, like something from Data::Dumper, but is meant to balance accuracy of diagnostics with ease.

msg( 'User codes', [ 'ABC', '123' ], undef, { foo => bar } )

will return

'User codes, [ABC, 123], undef, { foo => bar }'

subtest_name( [@args] )

Returns a string for a name for a subtest, including the name of the subroutine and basic string representations of the arguments.

This makes it easy for you to keep track of the important args passed into the test, and include the function name without repetitively typing it.

sub test_whatever {
    my $user = shift;
    my $foo  = shift;
    my $bar  = shift;
    my $msg  = shfit;

    return subtest subtest_name( $foo, $bar, $msg ) => sub {
        ....
}

test_whatever( 17, { this => 'that', other => undef }, 'Try it again without NYP' );

This will then give you TAP output like this:

# Subtest: main::test_whatever( 17, {other=>undef, this=>that}, Try it again without NYP )

Note that in the example, we didn't pass $user because it wasn't interesting to debugging.