d3fcba3c4edbd8c00cfaa00743253cda3e77123a
[p5sagit/App-FatPacker.git] / t / pack.t
1 #!perl
2 use strict;
3 use warnings FATAL => 'all';
4 use Test::More qw(no_plan);
5 use File::Basename;
6 use File::Copy;
7 use File::Path;
8 use File::Temp qw/tempdir/;
9 use File::Spec;
10 use Cwd;
11
12 BEGIN { use_ok "App::FatPacker", "" }
13
14 my $keep = $ENV{'FATPACKER_KEEP_TESTDIR'};
15 my $tempdir = tempdir($keep ? (CLEANUP => 0) : (CLEANUP => 1));
16 mkpath([<$tempdir/{lib,fatlib}/t/mod>]);
17
18 for(<t/mod/*.pm>) {
19   copy $_, "$tempdir/lib/$_" or die "copy failed: $!";
20 }
21
22 my $cwd = getcwd;
23 chdir $tempdir;
24
25 my $fp = App::FatPacker->new;
26 my $temp_fh = File::Temp->new;
27 select $temp_fh;
28 $fp->script_command_file;
29 print "1;\n";
30 select STDOUT;
31 close $temp_fh;
32
33 # make sure we don't pick up things from our created dir
34 chdir File::Spec->tmpdir;
35
36 # Packed, now try using it:
37 require $temp_fh;
38
39 {
40   require t::mod::a;
41   no warnings 'once';
42   ok $t::mod::a::foo eq 'bar', "packed script works";
43 }
44
45 if (my $testwith = $ENV{'FATPACKER_TESTWITH'}) {
46   for my $perl (split ' ', $testwith) {
47     my $out = system $perl, '-e',
48         q{alarm 5; require $ARGV[0]; require t::mod::a; exit($t::mod::a::foo eq 'bar' ? 0 : 1)}, $temp_fh;
49     ok !$out, "packed script works with $perl";
50   }
51 }
52