App-Framework-Lite

 view release on metacpan or  search on metacpan

t/08-embed.t  view on Meta::CPAN

#!/usr/bin/perl
#
use strict ;
use File::Basename;

use Test::More;

my $DEBUG=0;

	my $stdout="" ;
	my $stderr="" ;

	diag( "Testing module embed" );
	
	my $embedded_script = "./t/embed.pl" ;
	unlink $embedded_script ;

	my @run_args = (
		['run',		''],
		['help',	'-help'],
		['man',		'-man'],
	) ;	
	my @embed_args = (
		['all',		''],
#		['no-lib',	'-alf-embed-lib 0'],
		['no-comp',	'-alf-compress 0'],
#		['neither',	'-alf-embed-lib 0 -alf-compress 0'],
	) ;	
	my @tests = (
		't/embed/test1.pl',
		't/embed/test2.pl',
		't/embed/test3.pl',
	) ;
	plan tests => (scalar(@embed_args)) * (scalar(@tests)) * (scalar(@run_args)) ;

	my %expected ;
	foreach my $test_script (@tests)
	{
		## get "golden" output
		foreach my $run_aref (@run_args)
		{
			my ($name, $arg) = @$run_aref ;
			my $result = run_script($test_script, $arg) ;
			$expected{$name} = $result ;
print "$name =>\n$result\n\n" ;
		}
		
		## embed with different options
		foreach my $embed_aref (@embed_args)
		{
			## create embedded version
			my ($embed, $arg) = @$embed_aref ;
			$arg .= "  -alf-embed $embedded_script" ;
			run_script($test_script, $arg) ;
			
			## Run tests
			foreach my $run_aref (@run_args)
			{
				my ($name, $arg) = @$run_aref ;
				my $result = run_embedded($embedded_script, $arg) ;

				# convert script name to match golden
				my $progname = (fileparse($test_script, '\..*'))[0] ;
				my $embedname = (fileparse($embedded_script, '\..*'))[0] ;
				$result =~ s/$embedname/$progname/g ;
				
				is($expected{$name}, $result, "Embedded script with $embed options, run with $name options") ;
			}
		}
	}



( run in 2.401 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )