signature.t   [plain text]


#!perl -w
use strict;
use Test;
use File::Spec;
require File::Spec->catfile('t', 'common.pl');

use Module::Build;
skip_test("Skipping unless \$ENV{TEST_SIGNATURE} is true") unless $ENV{TEST_SIGNATURE};
need_module('Module::Signature');
plan tests => 6;

{
  my $base_dir = File::Spec->catdir( Module::Build->cwd, 't', 'Sample' );
  chdir $base_dir or die "can't chdir to $base_dir: $!";
}

my $build = new Module::Build( module_name => 'Sample',
			       requires => { 'File::Spec' => 0 },
			       license => 'perl',
			       sign => 1,
			     );

{
  eval {$build->dispatch('distdir')};
  ok $@, '';
  ok -e File::Spec->catfile($build->dist_dir, 'SIGNATURE');
}

{
  # Fake out Module::Signature and Module::Build - the first one to
  # run should be distmeta.
  my @run_order;
  {
    local $^W; # Skip 'redefined' warnings
    local *Module::Signature::sign              = sub { push @run_order, 'sign' };
    local *Module::Build::Base::ACTION_distmeta = sub { push @run_order, 'distmeta' };
    eval { $build->dispatch('distdir') };
  }
  ok $@, '';
  ok $run_order[0], 'distmeta';
  ok $run_order[1], 'sign';
}

eval { $build->dispatch('realclean') };
ok $@, '';