The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
NAME
        Test::Out - Test output from FILEHANDLE

SYNOPSIS
        use Test::Out;
        my $out = Test::Out->new( output => *STDOUT, tests => 4 );

        # Or ...

        my $out = Test::Out->new(tests => 4);
        $out->redirect( output => *STDOUT );

        ## This will go to a place that your harness can see
        $out->diag("Testing is* functions");

        ## But this will not be displayed but captured for test methods
        $some->method_that_prints("This is a test\n");
        $out->is_output("This is a test\n", "test 1");
        $out->isnt_output("Han shot first", "test 2");

        $out->diag("Testing regex functions");
        CORE::print "A random number: @{[int rand 100]}\n";
        $out->like_output(qr/random number: \d+/, "test 3");
        $out->unlike_output(qr/i like pickles$/, "test 4");

        $out->restore;

        ## This will be printed to STDOUT
        print "Done.\n";

DESCRIPTION
    Test out is another Test::Builder application that implements a few of
    the well known test facilities except the result of output to an
    IO::Handle is used. This could be used to capture output being printed
    to a file, but it's ideal for output being sent to STDOUT or STDERR.

    See the SYNOPSIS for an example use.

AUTHOR
    Lane Davis <cpan@upt.org>

FUNCTIONS
  METHODS
    $out->new(%options)
        The Test::Out package constructor has several arguments, some
        required some optional

        REQUIRED OPTIONS
            The following options must be present in the hash passed to the
            constructor:

            THE NUMBER OF PLANNED TESTS

                tests => $Tests
                    The number of tests are simply passed to Test::Builder

        NON-REQUIRED OPTIONS

            THE OUTPUT YOU WISH TO TEST
                Actually the "output" key is required, but you have the
                option of passing the key into the constructor or to the
                redirect method. This is useful if you have several segments
                of tests wrapped with redirect and restore.

                output => *FH
                    The output argument is required and may contain either a
                    FILEHANDLE typeglob, or

                output => \*FHREF
                    The "output" key may also point to a typeglob reference

    $out->redirect
    $out->redirect(output => *FH)
    $out->redirect(output => \*FH)
        This method will be automatically invoked by the constructor if the
        output key is passed to new.

  TESTS
    $out->is_output(EXPR, NAME)
    $out->was_output(EXPR, NAME)
        Tests the last output buffer against EXPR. If there isn't a perfect
        string comparison the test fails. Pay particular attention to
        possible newlines in the last output. If you're unsure either paste
        the contents of $\ to your comparitor or use the "like" method.

        The was_output method is an alias for is_output.

    $out->isnt_output(EXPR, NAME)
    $out->wasnt_output(EXPR, NAME)
        This is the inverse of is_output, the negation of the comparing EXPR
        to the last printed output is performed.

        The wasnt_output method is an alias for isnt_output.

    $out->like_output(qr/STRING/, NAME)
        This performs a test with the last output and a compiled regular
        expression as its first argument.

    $out->unlike_output(qr/STRING/, NAME)
        This performs a negated test with the last output and a compiled
        regular expression as its first argument.

    $out->cmp_output(OP, EXPR, NAME)
        This performs a comparison allowing you to pass your own perl binary
        operator as the first arugment (e.g., "==", "eq", etc).

    $out->diag(@messages)
        Prints a diagnostic message