NAME
Test::Mojo::CommandOutputRole
A role to extend Test::Mojo to make mojo command
output tests easy.
SYNOPSIS
my $t = Test::Mojo->new->with_roles('Test::Mojo::CommandOutputRole');
# Test for string equality
$t->command_output(do_something => [qw(arg1 arg2)] => 'Expected output',
'Correct do_something output');
# Test for regex matching
$t->command_output(do_something => [qw(arg1 arg2)] =>
qr/^ \s* Expected\ answer\ is\ [3-5][1-3] \.? $/x,
'Matching do_something output');
# Complex test
$t->command_output(do_something => [] => sub ($output) {
ok defined($output), 'Output is defined';
is length($output) => 42, 'Correct length';
}, 'Output test results OK');
Test results:
# Subtest: Correct do_something output
ok 1 - Command didn't die
ok 2 - Correct output string
1..2
ok 3 - Correct do_something output
# Subtest: Matching do_something output
ok 1 - Command didn't die
ok 2 - Output regex
1..2
ok 4 - Matching do_something output
# Subtest: Output test results OK
ok 1 - Command didn't die
# Subtest: Handle command output
ok 1 - Output is defined
ok 2 - Correct length
1..2
ok 2 - Handle command output
1..2
ok 5 - Output test results OK
DESCRIPTION
Test::Mojo::CommandOutputRole adds a method command_output
to Test::Mojo that offers a convenient way to test the output of commands.
How to use it
This extension is a Role that needs to be added to Test::Mojo via with_role
:
my $t = Test::Mojo->new->with_roles('Test::Mojo::CommandOutputRole');
$t->command_output($command, $args, $test, $test_name);
Runs a "subtest" in Test::More with tests against the output of $command
. Arguments:
$command
-
The name of the command to run.
$args
-
An array reference of commands for
$command
. $test
-
The test to run the command output against. This can have three types: If it is a simple string,
command_output
tests for string equality. If it is a regular expression (viaqr/.../
), it tries to match it against the command output. If it is a code reference (viasub {...}
), complex tests can be run inside the given code. The test output is then given as the first argument. $test_name
(optional)-
A name for the enclosing subtest, default ist
"Output test"
.
REPOSITORY AND ISSUE TRACKER
This distribution's source repository is hosted on GitHub together with an issue tracker.
LICENSE AND COPYRIGHT
Copyright (c) 2019 Mirko Westermeier (@memowe, mirko@westermeier.de)
Released under the MIT License (see LICENSE.txt for details).
CONTRIBUTORS
- Renee Bäcker (@reneeb)