Getopt-Alt
view release on metacpan or search on metacpan
t/get_options.t view on Meta::CPAN
#!/usr/bin/perl -w
use strict;
use warnings;
use List::Util qw/sum/;
use Test::More;
use Test::Warnings qw/warning/;
use Getopt::Alt qw/get_options/;
our $VERSION = 0.123;
my @data = data();
for my $data (@data) {
for my $test ( @{ $data->{tests} } ) {
local @ARGV = @{ $test->{argv} };
if ( $test->{error} ) {
my $error;
my $warning = warning { eval { get_options( @{ $data->{args} } ) }; $error = $@; };
$warning = '' if ref $warning eq 'ARRAY' && @$warning == 0;
# error in windows where something is getting a permissions denied error
$error = $error->[0] if ref $error eq 'ARRAY' && $error->[1] =~ /Permission denied/;
like "$error", $test->{error}, "'$test->{name}': Fails as expected"
or diag explain {
args => $data->{args},
ARGV => $test->{argv},
error => $error,
ERROR => "$error",
test => $test->{error}
} and exit;
like $warning, $test->{warning}, "'$test->{name}': Warns as expected"
or diag explain {
args => $data->{args},
ARGV => $test->{argv},
warning => $warning,
WARNING => "$warning",
test => $test->{error}
} and exit;
}
else {
my $files = eval { get_options( @{ $data->{args} } ) };
my $error = $@;
ok !$error, "'$test->{name}': No errors" or diag "'$test->{name}' failed with: $error";
is_deeply \@ARGV, $test->{results}, "'$test->{name}': Files returned correctly"
or diag explain $files;
}
}
}
done_testing;
sub data {
return (
{
args => [
'test|t!',
],
tests => [
{
name => 'Empty',
argv => [],
results => [],
},
{
name => 'with test',
argv => [qw/-t -t/],
results => [],
},
{
name => 'with file',
argv => [qw/file/],
results => [qw/file/],
},
( run in 3.129 seconds using v1.01-cache-2.11-cpan-81fc1098f69 )