summaryrefslogtreecommitdiff
path: root/t/par.t
diff options
context:
space:
mode:
Diffstat (limited to 't/par.t')
-rw-r--r--t/par.t96
1 files changed, 96 insertions, 0 deletions
diff --git a/t/par.t b/t/par.t
new file mode 100644
index 0000000..aeb39f7
--- /dev/null
+++ b/t/par.t
@@ -0,0 +1,96 @@
+#!/usr/bin/perl -w
+
+use strict;
+use lib 't/lib';
+use MBTest;
+blib_load('Module::Build');
+blib_load('Module::Build::ConfigData');
+
+my $tmp;
+
+{
+ my ($have_c_compiler, $tmp_exec) = check_compiler();
+ if ( ! $have_c_compiler ) {
+ plan skip_all => 'No compiler found';
+ } elsif ( ! eval {require PAR::Dist; PAR::Dist->VERSION(0.17)} ) {
+ plan skip_all => "PAR::Dist 0.17 or up not installed to check .par's.";
+ } elsif ( ! eval {require Archive::Zip} ) {
+ plan skip_all => "Archive::Zip required.";
+ } else {
+ plan tests => 3;
+ }
+ require Cwd;
+ $tmp = MBTest->tmpdir( $tmp_exec ? () : (DIR => Cwd::cwd) );
+}
+
+
+
+use DistGen;
+my $dist = DistGen->new( dir => $tmp, xs => 1 );
+$dist->add_file( 'hello', <<'---' );
+#!perl -w
+print "Hello, World!\n";
+__END__
+
+=pod
+
+=head1 NAME
+
+hello
+
+=head1 DESCRIPTION
+
+Says "Hello"
+
+=cut
+---
+$dist->change_build_pl
+({
+ module_name => $dist->name,
+ version => '0.01',
+ license => 'perl',
+ scripts => [ 'hello' ],
+});
+$dist->regen;
+
+$dist->chdir_in;
+
+use File::Spec::Functions qw(catdir);
+
+my @installstyle = qw(lib perl5);
+my $mb = Module::Build->new_from_context(
+ verbose => 0,
+ quiet => 1,
+
+ installdirs => 'site',
+);
+
+my $filename = $mb->dispatch('pardist');
+
+ok( -f $filename, '.par distributions exists' );
+my $distname = $dist->name;
+ok( $filename =~ /^\Q$distname\E/, 'Distribution name seems correct' );
+
+#--------------------------------------------------------------------------#
+# must work around broken Archive::Zip (1.28) which breaks PAR::Dist
+#--------------------------------------------------------------------------#
+
+SKIP: {
+ my $zip = Archive::Zip->new;
+ my $tmp2 = MBTest->tmpdir;
+ local %SIG;
+ $SIG{__WARN__} = sub { print STDERR $_[0] unless $_[0] =~ /\bstat\b/ };
+ skip "broken Archive::Zip", 1
+ unless eval { $zip->read($filename) == Archive::Zip::AZ_OK() }
+ && eval { $zip->extractTree('', "$tmp2/") == Archive::Zip::AZ_OK() }
+ && -r File::Spec->catfile( $tmp2, 'blib', 'META.yml' );
+
+ my $meta;
+ eval { $meta = PAR::Dist::get_meta($filename) };
+
+ ok(
+ (not $@ and defined $meta and not $meta eq ''),
+ 'Distribution contains META.yml'
+ );
+}
+