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 )