#!/usr/bin/perl -w
BEGIN {
unshift
@INC
,
't/lib'
;
}
chdir
't'
;
my
$Is_VMS
= $^O eq
'VMS'
;
my
$Is_Win32
= $^O eq
'MSWin32'
;
my
$perl
= which_perl;
my
$mm
=
bless
{
NAME
=>
"Foo"
,
MAKE
=>
$Config
{make} },
"MM"
;
cmp_ok(
$mm
->max_exec_len,
'>='
, 256,
'max_exec_len'
);
my
$echo
=
$mm
->oneliner(
q{print @ARGV}
, [
'-l'
]);
$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
}