App-Gimei
view release on metacpan or search on metacpan
class t::CLI {
use App::Gimei::Runner;
use Capture::Tiny qw(capture);
#
# instance variables
#
field $stdout : param : reader;
field $stderr : param : reader;
field $exit_code : param : reader;
field $error_message : param : reader;
#
# class methods
#
sub run ( $class, @args ) {
my %param;
my @capture = capture {
my $code = eval { App::Gimei::Runner->new->execute(@args) };
$param{exit_code} = $code;
$param{error_message} = $@;
};
return $class->new( %param, stdout => $capture[0], stderr => $capture[1] );
}
}
1;
} else {
T2->is( $cli->exit_code, 0, "$t->{Name} exit_code" );
}
if ( ref( $t->{expected_stdout} ) eq 'Regexp' ) {
T2->like( $cli->stdout, $t->{expected_stdout}, "$t->{Name} stdout" );
} else {
T2->is( $cli->stdout, $t->{expected_stdout}, "$t->{Name} stdout" );
}
if ( ref( $t->{expected_stderr} ) eq 'Regexp' ) {
T2->like( $cli->stderr, $t->{expected_stderr}, "$t->{Name} stderr" );
} else {
T2->is( $cli->stderr, $t->{expected_stderr}, "$t->{Name} stderr" );
}
}
T2->done_testing;
}
1;
t/option_h.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'long form',
args => ['-help'],
expected_error_message => '',
expected_stdout => qr/^Usage:/,
expected_stderr => '',
},
{
Name => 'short form',
args => ['-h'],
expected_error_message => '',
expected_stdout => qr/^Usage:/,
expected_stderr => '',
},
);
run(@tests);
t/option_n.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'number expected',
args => [ '-n', 'Alice' ],
expected_error_message =>
qr/Error: Value "Alice" invalid for option n \((integer )?number expected\)\n/,
expected_stdout => '',
expected_stderr => '',
},
{
Name => 'positive number expected',
args => [ '-n', '-1' ],
expected_error_message =>
"Error: value -1 invalid for option n (must be positive number)\n",
expected_stdout => '',
expected_stderr => '',
},
{
Name => '-n 1',
args => [ '-n', '1' ],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => '-n 2',
args => [ '-n', '2', 'name:family' ],
expected_error_message => '',
expected_stdout => qr/^\S+\n\S+$/,
expected_stderr => '',
},
);
run(@tests);
t/option_sep.t view on Meta::CPAN
use v5.40;
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => '-sep :',
args => [ '-sep', ':' ],
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
expected_error_message => '',
},
{
Name => '-sep : pref, city',
args => [ '-sep', ':', 'address:prefecture', 'address:city' ],
expected_stdout => qr/^[^:]+:[^:]+$/,
expected_stderr => '',
expected_error_message => '',
},
);
run(@tests);
t/option_v.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'long form',
args => ['-version'],
expected_error_message => '',
expected_stdout => "$App::Gimei::VERSION\n",
expected_stderr => '',
},
{
Name => 'short form',
args => ['-v'],
expected_error_message => '',
expected_stdout => "$App::Gimei::VERSION\n",
expected_stderr => '',
},
);
run(@tests);
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'default',
args => ['name'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'address->romaji',
args => ['address:romaji'],
expected_error_message =>
"Error: rendering romaji is not supported for address\n",
expected_stdout => '',
expected_stderr => '',
},
{
Name => 'gender',
args => ['name:gender'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'kanji',
args => ['name:kanji'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'hiragana',
args => ['name:family:hiragana'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'katakana',
args => ['address:katakana'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'unknown rendering',
args => ['address:prefecture:romaji'],
expected_error_message =>
"Error: rendering romaji is not supported for address\n",
expected_stdout => '',
expected_stderr => '',
},
);
run(@tests);
t/subtype.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'family',
args => ['name:family'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'last',
args => ['name:last'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'given',
args => ['male:given'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'first',
args => ['female:first'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'gender',
args => ['name:gender'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'sex',
args => ['name:sex'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'unknown',
args => ['female:unknown'],
expected_error_message => "Error: unknown subtype or rendering: unknown\n",
expected_stdout => '',
expected_stderr => '',
},
{
Name => 'prefecture',
args => ['address:prefecture'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'city',
args => ['address:city'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'town',
args => ['address:town'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'unknown',
args => ['address:unknown'],
expected_error_message => "Error: unknown subtype or rendering: unknown\n",
expected_stdout => '',
expected_stderr => '',
},
);
run(@tests);
t/word_type.t view on Meta::CPAN
use lib ".";
use t::Util qw(run);
my @tests = (
{
Name => 'default',
args => [],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'name',
args => ['name'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'male',
args => ['male'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'female',
args => ['female'],
expected_error_message => '',
expected_stdout => qr/^\S+\s\S+$/,
expected_stderr => '',
},
{
Name => 'address',
args => ['address'],
expected_error_message => '',
expected_stdout => qr/^\S+$/,
expected_stderr => '',
},
{
Name => 'not supported',
args => ['NOT_SUPPORTED'],
expected_error_message => "Error: unknown word_type: NOT_SUPPORTED\n",
expected_stdout => '',
expected_stderr => '',
},
);
run(@tests);
( run in 3.013 seconds using v1.01-cache-2.11-cpan-75ffa21a3d4 )