Cron-Sequencer
view release on metacpan or search on metacpan
t/cli-parse_argv.t view on Meta::CPAN
#!perl
use strict;
use warnings;
use Test::More;
use Test::Deep;
use Test::Fatal;
require DateTime;
use Cron::Sequencer::CLI qw(parse_argv calculate_start_end);
my $nowish = time;
{
no warnings 'redefine';
*DateTime::_core_time = sub { return $nowish };
}
my @today = calculate_start_end({ show => 'today' });
sub fake_pod2usage {
die ["Called pod2usage", @_];
}
for (["no arguments", "",
undef, 'exitval', 255],
["unknown arguments", "--bogus",
qr/\AUnknown option: bogus\n\z/, 'exitval', 255, 'verbose', 1],
["--env and --hide-env together", "--hide-env file --env FOO=BAR",
undef, 'exitval', 255,
'message', "--env and --hide-env options can't be used together"],
["--env and --hide-env together (anywhere)",
"--hide-env file1 -- file2 --env FOO=BAR",
undef, 'exitval', 255,
'message', "--env and --hide-env options can't be used together"],
["Output options aren't allowed after --",
"--from 1 --to 11 -- --hide-env file",
qr/\AUnknown option: hide-env\n\z/, 'exitval', 255, 'verbose', 1],
["--version isn't allowed after --",
"file -- --version",
qr/\AUnknown option: version\n\z/, 'exitval', 255, 'verbose', 1],
["--json isn't allowed after --",
"file -- --json",
qr/\AUnknown option: json\n\z/, 'exitval', 255, 'verbose', 1],
["bogus --json option", "--json=bogus",
undef, 'exitval', 255, 'message', "Unknown --json option 'bogus'"],
["--json=split,seq", "--json=split,seq",
undef, 'exitval', 255, 'message', "Can't use --json=seq with --json=split"],
["--json=seq --json=split", "--json=seq --json=split",
undef, 'exitval', 255, 'message', "Can't use --json=seq with --json=split"],
) {
my ($desc, $flat, $warn, @want) = @$_;
my @args = split ' ', $flat;
unshift @want, "Called pod2usage";
my @warnings;
cmp_deeply(exception {
local $SIG{__WARN__} = sub {
push @warnings, \@_;
};
parse_argv(\&fake_pod2usage, @args);
}, \@want, "pod2usage called for $desc");
if (defined $warn) {
cmp_deeply(\@warnings, [[re($warn)]], "got expected warning from $desc");
} else {
cmp_deeply(\@warnings, [], "no warnings from $desc");
( run in 2.063 seconds using v1.01-cache-2.11-cpan-54e63673c56 )