#!/usr/bin/perl -w
if
( have_module(
'Module::Signature'
)
&&
$INC
{
'Module/Signature.pm'
} =~ m{t/lib/Module/Signature\.pm}
) {
plan
tests
=> 12;
}
else
{
plan
skip_all
=>
"Mock Module::Signature not loadable"
;
}
blib_load(
'Module::Build'
);
my
$tmp
= MBTest->tmpdir;
my
$dist
= DistGen->new(
dir
=>
$tmp
);
$dist
->change_build_pl
({
module_name
=>
$dist
->name,
license
=>
'perl'
,
sign
=> 1,
auto_configure_requires
=> 0,
quiet
=> 1,
});
$dist
->regen;
$dist
->chdir_in;
my
$mb
= Module::Build->new_from_context;
{
eval
{
$mb
->dispatch(
'distdir'
)};
my
$err
= $@;
is
$err
,
''
;
chdir
(
$mb
->dist_dir ) or
die
"Can't chdir to '@{[$mb->dist_dir]}': $!"
;
ok -e
'SIGNATURE'
;
$dist
->chdir_in;
}
{
my
@run_order
;
{
local
$^W;
local
*Module::Signature::sign
;
*Module::Signature::sign
=
sub
{
push
@run_order
,
'sign'
};
local
*Module::Build::Base::ACTION_distmeta
;
*Module::Build::Base::ACTION_distmeta
=
sub
{
push
@run_order
,
'distmeta'
};
eval
{
$mb
->dispatch(
'distdir'
) };
}
is $@,
''
;
is
$run_order
[0],
'distmeta'
;
is
$run_order
[1],
'sign'
;
}
eval
{
$mb
->dispatch(
'realclean'
) };
is $@,
''
;
{
eval
{
$mb
->dispatch(
'distdir'
,
sign
=> 0 )};
is $@,
''
;
chdir
(
$mb
->dist_dir ) or
die
"Can't chdir to '@{[$mb->dist_dir]}': $!"
;
ok !-e
'SIGNATURE'
,
'./Build distdir --sign 0 does not sign'
;
}
eval
{
$mb
->dispatch(
'realclean'
) };
is $@,
''
;
$dist
->chdir_in;
{
local
@ARGV
=
'--sign=1'
;
$dist
->change_build_pl({
module_name
=>
$dist
->name,
license
=>
'perl'
,
auto_configure_requires
=> 0,
quiet
=> 1,
});
$dist
->regen;
my
$mb
= Module::Build->new_from_context;
is
$mb
->{properties}{sign}, 1;
eval
{
$mb
->dispatch(
'distdir'
)};
my
$err
= $@;
is
$err
,
''
;
chdir
(
$mb
->dist_dir ) or
die
"Can't chdir to '@{[$mb->dist_dir]}': $!"
;
ok -e
'SIGNATURE'
,
'Build.PL --sign=1 signs'
;
}