Alien-Build

 view release on metacpan or  search on metacpan

t/alien_build_plugin_build_searchdep.t  view on Meta::CPAN

use 5.008004;
use Test2::V0 -no_srand => 1;
use Test::Alien::Build;
use Alien::Build::Plugin::Build::SearchDep;
use lib 'corpus/lib';
use Alien::libfoo1;
use Alien::libfoo2;
use Capture::Tiny qw( capture_merged );
use Path::Tiny qw( path );

eval { require Archive::Tar; };
skip_all 'test requires Archive::Tar' if $@;
eval { require Env::ShellWords };
skip_all 'test requires Env::ShellWords' if $@;

my $corpus = path('corpus')->absolute;
$corpus =~ s{(\s)}{\\$1}g;

subtest basic => sub {

  delete $ENV{$_} for qw( CFLAGS CXXFLAGS LDFLAGS );

  my $build = alienfile q{

    use alienfile;

    share {

      plugin 'Download::Foo';

      plugin 'Build::SearchDep' => (
        aliens => 'Alien::libfoo2',
      );

      build sub {
        my($build) = @_;
        for(qw( CFLAGS CXXFLAGS LDFLAGS ))
        {
          die "$_ not defined !!" unless defined $ENV{$_};
          #print "$_=$ENV{$_}\n";
          $build->runtime_prop->{"my_$_"} = $ENV{$_};
        }
      };

      gather sub {
        my($build) = @_;

        $build->runtime_prop->{cflags} = '-core-cflag';
        $build->runtime_prop->{cflags_static} = '-core-cflag-static';
        $build->runtime_prop->{libs} = '-core-flag';
        $build->runtime_prop->{libs_static} = '-core-flag-static';
      };

    };

  };

  ok $build->requires('configure')->{'Alien::Build::Plugin::Build::SearchDep'}, 'set configure require for self';
  ok $build->requires('share')->{'Env::ShellWords'}, 'set share require for Env::ShellWords';
  is $build->requires('share')->{'Alien::libfoo2'}, 0, 'set share require for Alien::libfoo2';

  note scalar capture_merged {
    $build->load_requires($build->install_type);
    $build->download;
    $build->build;



( run in 1.945 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )