Alien-Base-ModuleBuild

 view release on metacpan or  search on metacpan

t/alien_base_modulebuild_repository.t  view on Meta::CPAN

use Test2::V0 -no_srand => 1;
use Alien::Base::ModuleBuild::Repository;
use File::chdir;
use Path::Tiny qw( path );
use Capture::Tiny qw( capture_stderr );

my $network_fetch = 0;
my $secure_fetch = 1;
@INC = map { path($_)->absolute->stringify } @INC;

# This test will not pass with digest required.  It does not download anything
# off the internet.
$ENV{ALIEN_DOWNLOAD_RULE} = 'warn'              if defined $ENV{ALIEN_DOWNLOAD_RULE} && $ENV{ALIEN_DOWNLOAD_RULE} eq 'digest';
$ENV{ALIEN_DOWNLOAD_RULE} = 'digest_or_encrypt' if defined $ENV{ALIEN_DOWNLOAD_RULE} && $ENV{ALIEN_DOWNLOAD_RULE} eq 'digest_and_encrypt';

my $default = {
  protocol => 'test',
  host     => 'ftp.gnu.org',
  location => '/gnu/gsl',
};

subtest 'alien_install_network' => sub {

  local $ENV{ALIEN_INSTALL_NETWORK};
  delete $ENV{ALIEN_INSTALL_NETWORK};

  $network_fetch = 1;

  ok(lives { Alien::Base::ModuleBuild::Repository::Test->new($default)->probe }, 'default') or diag($@);

  $ENV{ALIEN_INSTALL_NETWORK} = 1;

  ok(lives { Alien::Base::ModuleBuild::Repository::Test->new($default)->probe }, 'override 1') or diag($@);

  $ENV{ALIEN_INSTALL_NETWORK} = 0;

  is(
    dies { Alien::Base::ModuleBuild::Repository::Test->new($default)->probe },
    match qr/network fetch is disabled via ALIEN_INSTALL_NETWORK/,
    'override 0',
  );

  $network_fetch = 0;

};

subtest 'alien_download_rule' => sub {

  subtest 'warn' => sub {

    local $ENV{ALIEN_DOWNLOAD_RULE} = 'warn';
    is(
      Alien::Base::ModuleBuild->alien_download_rule, 'warn',
    );

    my @warnings;

    local $SIG{__WARN__} = sub {
      my($message) = @_;
      if($message =~ /^(!!! NOTICE OF FUTURE CHANGE IN BEHAVIOR !!!|A future version of Alien::Base::ModuleBuild)/)
      {
        push @warnings, $message
      }
      else
      {



( run in 0.473 second using v1.01-cache-2.11-cpan-fa01517f264 )