4 BEGIN { plan skip_all => "Install Capture::Tiny to test installation"
5 unless eval { require Capture::Tiny; 1 } }
6 use Capture::Tiny qw(capture_merged);
8 use File::Path qw(mkpath);
12 use lib 't/lib'; use TempDir;
25 open my $fh, '>', 'Makefile.PL' or die "can't create Makefile.PL: $!";
26 print $fh 'use ExtUtils::MakeMaker; WriteMakefile( NAME => "EUMM" );';
28 system($^X, 'Makefile.PL') && die "Makefile.PL failed";
29 system($Config{make}, 'install') && die "$Config{make} install failed";
32 open my $fh, '>', 'Build.PL' or die "can't create Build.PL: $!";
33 print $fh <<END_BUILD;
39 )->create_build_script;
42 system($^X, 'Build.PL') && die "Build.PL failed";
43 system($^X, 'Build', 'install') && die "Build install failed";
47 plan tests => @dirs * keys(%dist_types) * 2;
50 for my $dir_base (@dirs) {
51 for my $dist_type (sort keys %dist_types) {
53 my $temp = mk_temp_dir("install-$dist_type-XXXXX");
54 my $ll_dir = "$dist_type-$dir_base";
55 my $ll = "$temp/$ll_dir";
56 mkpath(File::Spec->canonpath($ll));
58 local::lib->import($ll);
60 my $dist_dir = mk_temp_dir("source-$dist_type-XXXXX");
63 open my $fh, '>', "lib/$dist_type.pm";
67 my $output = capture_merged { eval {
68 $dist_types{$dist_type}->();
70 is $@, '', "installed $dist_type into '$ll_dir'"
73 my $dest_dir = local::lib->install_base_perl_path($ll);
74 my $file = File::Spec->catfile($dest_dir, "$dist_type.pm");
75 (my $short_file = $file) =~ s/^\Q$ll/$ll_dir/;
78 "$dist_type - $dir_base - $dist_type.pm installed as '$short_file'",
79 ) or diag 'Files in ' . $dest_dir . ":\n", join("\n", do {
81 (opendir $dh, $dest_dir) ? readdir $dh : "doesn't exist";