logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

App::Cmd::Tester::CaptureExternal - Extends App::Cmd::Tester to capture from external subprograms

Author

       Ricardo Signes <cpan@semiotic.systems>

Description

       App::Cmd::Tester provides a useful scaffold for testing applications, but it is unable to capture output
       generated from any external subprograms that are invoked from the application.

       This subclass uses an alternate mechanism for capturing output (Capture::Tiny) that does capture from
       external programs, with one major limitation.

       It is not possible to capture externally from both STDOUT and STDERR while also having appropriately
       interleaved combined output.  Therefore, the "output" from this subclass simply concatenates the two.

       You can still use "output" for testing if there is any output at all or for testing if something appeared
       in either output stream, but you can't rely on the ordering being correct between lines to STDOUT and
       lines to STDERR.

Name

       App::Cmd::Tester::CaptureExternal - Extends App::Cmd::Tester to capture from external subprograms

Perl Version

       This library should run on perls released even a long time ago.  It should work on any version of perl
       released in the last five years.

       Although it may work on older versions of perl, no guarantee is made that the minimum required version
       will not be increased.  The version may be increased for any reason, and there is no promise that patches
       will be accepted to lower the minimum required perl.

Synopsis

         use Test::More tests => 4;
         use App::Cmd::Tester::CaptureExternal;

         use YourApp;

         my $result = test_app(YourApp => [ qw(command --opt value) ]);

         like($result->stdout, qr/expected output/, 'printed what we expected');

         is($result->stderr, '', 'nothing sent to sderr');

         ok($result->output, "STDOUT concatenated with STDERR");

Version

       version 0.337

See Also