X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fpack.t;h=c88b9e1a07dcecc6290cb16bb1ce807de7a67422;hb=1ad908f61fdf7cd2b0adac102e7855f69f2e0e6b;hp=4d98b0bf8b1fce97e78aa7674ea0715347bad0f6;hpb=edff3fdce761cadb45de0febaa25e099ef3f12e1;p=p5sagit%2FApp-FatPacker.git diff --git a/t/pack.t b/t/pack.t index 4d98b0b..c88b9e1 100644 --- a/t/pack.t +++ b/t/pack.t @@ -5,17 +5,21 @@ use Test::More qw(no_plan); use File::Basename; use File::Copy; use File::Path; -use File::Temp; +use File::Temp qw/tempdir/; +use File::Spec; +use Cwd; BEGIN { use_ok "App::FatPacker", "" } -my $tempdir = File::Temp->newdir; +my $keep = $ENV{'FATPACKER_KEEP_TESTDIR'}; +my $tempdir = tempdir($keep ? (CLEANUP => 0) : (CLEANUP => 1)); mkpath([<$tempdir/{lib,fatlib}/t/mod>]); for() { copy $_, "$tempdir/lib/$_" or die "copy failed: $!"; } +my $cwd = getcwd; chdir $tempdir; my $fp = App::FatPacker->new; @@ -26,11 +30,45 @@ print "1;\n"; select STDOUT; close $temp_fh; +# make sure we don't pick up things from our created dir +chdir File::Spec->tmpdir; + # Packed, now try using it: require $temp_fh; { require t::mod::a; no warnings 'once'; - ok $t::mod::a::foo eq 'bar'; + ok $t::mod::a::foo eq 'bar', "packed script works"; +} + +{ + + ok ref $INC[0], "\$INC[0] is a reference"; + ok $INC[0]->can( "files" ), "\$INC[0] has a files method"; + + my @files = sort $INC[0]->files; + + is_deeply( \@files, [ + 't/mod/a.pm', + 't/mod/b.pm', + 't/mod/c.pm', + 't/mod/cond.pm', + ], "\$INC[0]->files returned the files" ); + } + + +if (my $testwith = $ENV{'FATPACKER_TESTWITH'}) { + for my $perl (split ' ', $testwith) { + my $out = system $perl, '-e', + q{alarm 5; require $ARGV[0]; require t::mod::a; exit($t::mod::a::foo eq 'bar' ? 0 : 1)}, $temp_fh; + ok !$out, "packed script works with $perl"; + + $out = system $perl, '-e', + q{alarm 5; require $ARGV[0]; exit( (sort $INC[0]->files)[0] eq 't/mod/a.pm' ? 0 : 1 )}, $temp_fh; + ok !$out, "\$INC[0]->files works with $perl"; + + } +} +