blob: 6e6bab355d51a51068113ed427deb60d04b2959e [file] [log] [blame]
#!/usr/bin/perl -w
BEGIN {
unshift @INC, 't/lib';
}
chdir 't';
use Config;
use ExtUtils::MM;
use MakeMaker::Test::Utils;
my $Is_VMS = $^O eq 'VMS';
my $Is_Win32 = $^O eq 'MSWin32';
use Test::More tests => 7;
my $perl = which_perl;
my $mm = bless { NAME => "Foo", MAKE => $Config{make} }, "MM";
# I don't expect anything to have a length shorter than 256 chars.
cmp_ok( $mm->max_exec_len, '>=', 256, 'max_exec_len' );
my $echo = $mm->oneliner(q{print @ARGV}, ['-l']);
# Force a short command length to make testing split_command easier.
$mm->{_MAX_EXEC_LEN} = length($echo) + 15;
is( $mm->max_exec_len, $mm->{_MAX_EXEC_LEN}, ' forced a short max_exec_len' );
my @test_args = qw(foo bar baz yar car har ackapicklerootyjamboree);
my @cmds = $mm->split_command($echo, @test_args);
isnt( @cmds, 0 );
@results = _run(@cmds);
is( join('', @results), join('', @test_args));
my %test_args = ( foo => 42, bar => 23, car => 'har' );
$even_args = $mm->oneliner(q{print !(@ARGV % 2)});
@cmds = $mm->split_command($even_args, %test_args);
isnt( @cmds, 0 );
@results = _run(@cmds);
like( join('', @results ), qr/^1+$/, 'pairs preserved' );
is( $mm->split_command($echo), 0, 'no args means no commands' );
sub _run {
my @cmds = @_;
s{\$\(ABSPERLRUN\)}{$perl} foreach @cmds;
if( $Is_VMS ) {
s{-\n}{} foreach @cmds
}
elsif( $Is_Win32 ) {
s{\\\n}{} foreach @cmds;
}
return map { s/\n+$//; $_ } map { `$_` } @cmds
}