use Test;
use File::Spec;
plan(tests => 4);
ok(TestHelper->create_dist('Foo'));
ok(TestHelper->build_dist('Foo'));
ok(-f File::Spec->catfile(qw(t Foo inc Module Install.pm)));
ok(TestHelper->kill_dist('Foo'));
package TestHelper;
BEGIN {$^W = 1};
use strict;
use File::Spec;
use File::Path;
use Cwd;
use Config;
sub create_dist {
my ($self, $dist) = @_;
my $dist_path = File::Spec->catdir('t', $dist);
return 0 if -d $dist_path;
my $home = cwd;
mkdir($dist_path, 0777) or return 0;
chdir $dist_path or return 0;
open MANIFEST, '> MANIFEST' or return 0;
print MANIFEST <<"END_MANIFEST";
MANIFEST
Makefile.PL
$dist.pm
END_MANIFEST
close MANIFEST;
open MAKEFILE_PL, '> Makefile.PL' or return 0;
print MAKEFILE_PL <<"END_MAKEFILE_PL";
use inc::Module::Install;
license 'perl';
WriteMakefile;
END_MAKEFILE_PL
close MAKEFILE_PL;
open MODULE, "> $dist.pm" or return 0;
print MODULE <<"END_PERL_MODULE";
package $dist;
\$VERSION = '3.21';
use strict;
1;
__END__
=head1 NAME
$dist - A test module
=cut
END_PERL_MODULE
close MODULE;
chdir $home or return 0;
return 1;
}
sub build_dist {
my ($self, $dist) = @_;
my $dist_path = File::Spec->catdir('t', $dist);
return 0 unless -d $dist_path;
my $home = cwd;
chdir $dist_path or return 0;
system($^X, "-Ilib", "-Iblib/lib", "Makefile.PL") == 0 or return 0;
chdir $home or return 0;
return 1;
}
sub kill_dist {
my ($self, $dist) = @_;
my $dist_path = File::Spec->catdir('t', $dist);
File::Path::rmtree($dist_path) or return 0;
return 1;
}
1;