App-dozo
view release on metacpan or search on metacpan
t/03_dozo.t view on Meta::CPAN
subtest '--bundle' => sub {
my $dir = tempdir(CLEANUP => 1);
my $bundled = "$dir/dozo";
system("$dozo -q --bundle > $bundled") == 0 or die "--bundle failed";
chmod 0755, $bundled;
open my $fh, '<', $bundled or die;
my $text = do { local $/; <$fh> };
close $fh;
like($text, qr/\A#!.*\n# getoptlong\.sh embedded by dozo --bundle\n(?s:.*)^gol_parse \(\)(?s:.*)^# end of getoptlong\.sh\n/m,
'getoptlong.sh is inserted after the first line');
my ($orig) = do { local(@ARGV, $/) = ($dozo); <> };
my $body = $orig =~ s/\A.*\n//r;
like($text, qr/\Q$body\E\z/, 'the rest of dozo follows unchanged');
# a PATH with bash but without getoptlong.sh
my $bin = "$dir/bin";
mkdir $bin;
my ($bash) = grep { -x } map { "$_/bash" } split /:/, $ENV{PATH};
symlink $bash, "$bin/bash" or die "bash not found in PATH";
local $ENV{PATH} = "$bin:/usr/bin:/bin";
my $out = `$bundled -n -I alpine echo test 2>&1`;
( run in 1.087 second using v1.01-cache-2.11-cpan-ac8be02dad9 )