#!/usr/bin/perl -w
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."
;
plan
skip_all
=>
"Archive::Zip required."
;
}
else
{
plan
tests
=> 3;
}
$tmp
= MBTest->tmpdir(
$tmp_exec
? () : (
DIR
=> Cwd::cwd) );
}
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;
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'
);
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'
);
}