App-Framework
view release on metacpan or search on metacpan
t/04-Args.t view on Meta::CPAN
#!/usr/bin/perl
#
use strict ;
use Test::More;
use App::Framework '+Args(open=none)' ;
# VERSION
our $VERSION = '2.01' ;
my $DEBUG=0;
my $VERBOSE=0;
my $stdout="" ;
my $stderr="" ;
diag( "Testing args" );
my $input_checks = 3 ;
my @args = (
['src1', 't/args/file.txt'],
['src2', 't/args/dir'],
['src3', 't/args/exists.txt'],
['out1', 't/args/outfile'],
['out2', 't/args/outdir'],
['out3', 't/args/outfile2'],
) ;
my @array = (
't/args/file.txt',
't/args/exists.txt',
't/args/array.txt',
) ;
plan tests => 1 + $input_checks + 1 + 2 + ((1 + (scalar(@args) * 2)) * 2 * 2) + ((1 + (scalar(@array)) ) * 2 );
## These should not work
my $app = App::Framework->new('exit_type'=>'die') ;
for(my $in=0; $in < $input_checks; ++$in)
{
@ARGV = () ;
my $arg=0 ;
foreach my $arg_aref (@args)
{
my $val = $arg_aref->[1] ;
$val .= "_not_there" if $arg == $in ;
push @ARGV, $val ;
++$arg ;
}
push @ARGV, @array ; # array
eval {
local *STDOUT ;
local *STDERR ;
open(STDOUT, '>', \$stdout) or die "Can't open STDOUT: $!" ;
open(STDERR, '>', \$stderr) or die "Can't open STDERR: $!";
$app->go() ;
};
print "reply: $stdout" ;
like($stdout, qr/Error: Must specify/i, "Input checking") ;
}
## Array input
foreach my $arg_aref (@args)
{
my $val = $arg_aref->[1] ;
push @ARGV, $val ;
}
eval {
local *STDOUT ;
local *STDERR ;
open(STDOUT, '>', \$stdout) or die "Can't open STDOUT: $!" ;
open(STDERR, '>', \$stderr) or die "Can't open STDERR: $!";
$app->go() ;
};
print "reply: $stdout" ;
like($stdout, qr/Error: Must specify/i, "Input array checking") ;
## These should now work
@ARGV = () ;
foreach my $arg_aref (@args)
{
push @ARGV, $arg_aref->[1] ;
}
foreach my $arg (@array)
{
push @ARGV, $arg ;
}
eval {$app->go()} ;
$@ =~ s/Died.*//m if $@ ;
$@ =~ s/\s+//gm if $@ ;
print "$@" if $@ ;
#=================================================================================
# SUBROUTINES EXECUTED BY APP
#=================================================================================
#----------------------------------------------------------------------
# Main execution
#
sub app
{
( run in 2.072 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )