Alien-Base-ModuleBuild

 view release on metacpan or  search on metacpan

author.yml  view on Meta::CPAN

    - Alien::Base::ModuleBuild::File
    - Alien::Base::ModuleBuild::Repository.*
    - Alien::Base::ModuleBuild::Utils

    # these are just overriden methods
    - Alien::Base::ModuleBuild#new
    - Alien::Base::ModuleBuild#do_system
    - Alien::Base::ModuleBuild#process_share_dir_files

    # these are just private methods that probably should have had a prefix
    - Alien::Base::ModuleBuild#alien_validate_repo
    - Alien::Base::ModuleBuild#alien_configure
    - Alien::Base::ModuleBuild#alien_create_repositories
    - Alien::Base::ModuleBuild#alien_detect_blib_scheme
    - Alien::Base::ModuleBuild#alien_exec_prefix
    - Alien::Base::ModuleBuild#alien_find_lib_paths
    - Alien::Base::ModuleBuild#alien_generate_manual_pkgconfig
    - Alien::Base::ModuleBuild#alien_init_temp_dir
    - Alien::Base::ModuleBuild#alien_library_destination
    - Alien::Base::ModuleBuild#alien_load_pkgconfig
    - Alien::Base::ModuleBuild#alien_refresh_manual_pkgconfig

lib/Alien/Base/ModuleBuild.pm  view on Meta::CPAN

        if ($repo->{protocol} eq $var_protocol) {
            $repo->{$var_key} = $ENV{$var};
        }
    }

    push @repos, $self->alien_repository_class($repo->{protocol} || 'default')->new( $repo );
  }

  # check validation, including c compiler for src type
  @repos =
    grep { $self->alien_validate_repo($_) }
    @repos;

  unless (@repos) {
    croak "No valid repositories available";
  }

  return @repos;

}

sub alien_validate_repo {
  my $self = shift;
  my ($repo) = @_;
  my $platform = $repo->{platform};

  # return true if platform is undefined
  return 1 unless defined $platform;

  # if $valid is src, check for c compiler
  if ($platform eq 'src') {
    return !$repo->{c_compiler_required} || $self->have_c_compiler;

t/alien_base_modulebuild.t  view on Meta::CPAN


subtest 'validation' => sub {

  local $CWD = _new_temp();

  my $builder = builder(
    module_name  => 'My::Test::Module',
    dist_version => '1.234.567',
  );

  ok( $builder->alien_validate_repo( {platform => undef} ), "undef validates to true");

  subtest 'windows test' => sub {
    skip_all "Windows test" unless $builder->is_windowsish();
    ok( $builder->alien_validate_repo( {platform => 'Windows'} ), "platform Windows on Windows");
    ok( ! $builder->alien_validate_repo( {platform => 'Unix'} ), "platform Unix on Windows is false");
  };

  subtest 'unix test' => sub {
    skip_all "Unix test" unless $builder->is_unixish();
    ok( $builder->alien_validate_repo( {platform => 'Unix'} ), "platform Unix on Unix");
    ok( ! $builder->alien_validate_repo( {platform => 'Windows'} ), "platform Windows on Unix is false");
  };

  subtest 'need c compiler' => sub {
    skip_all "Needs c compiler" unless $builder->have_c_compiler();
    ok( $builder->alien_validate_repo( {platform => 'src'} ), "platform src");
  };
};

subtest 'basic interpolation' => sub {

  my $builder = builder();

  is( $builder->alien_interpolate('%phello'), $builder->alien_exec_prefix . 'hello', 'prefix interpolation');
  is( $builder->alien_interpolate('%%phello'), '%phello', 'no prefix interpolation with escape');



( run in 0.502 second using v1.01-cache-2.11-cpan-a5abf4f5562 )