Alien-Build

 view release on metacpan or  search on metacpan

t/alien_build_plugin_build_searchdep.t  view on Meta::CPAN

  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;
  };

  is($build->runtime_prop->{cflags}, '-core-cflag', 'cflags');
  is($build->runtime_prop->{cflags_static}, '-core-cflag-static', 'cflags_static');

  is($build->runtime_prop->{libs}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib -core-flag", 'libs');
  is($build->runtime_prop->{libs_static}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib -core-flag-static", 'libs_static');

  is($build->runtime_prop->{my_CFLAGS}, "-I$corpus/lib/auto/share/dist/Alien-libfoo2/include", 'my_CFLAGS');
  is($build->runtime_prop->{my_CXXFLAGS}, "-I$corpus/lib/auto/share/dist/Alien-libfoo2/include", 'my_CXXFLAGS');
  is($build->runtime_prop->{my_LDFLAGS}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib", 'my_LDFLAGS');

};


subtest public_I => sub {

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

  my $build = alienfile q{

    use alienfile;

    share {

      plugin 'Download::Foo';

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

      build sub {};

      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';
      };

    };

  };

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

  is($build->runtime_prop->{cflags}, "-I$corpus/lib/auto/share/dist/Alien-libfoo2/include -core-cflag");
  is($build->runtime_prop->{cflags_static}, "-I$corpus/lib/auto/share/dist/Alien-libfoo2/include -core-cflag-static");
  is($build->runtime_prop->{libs}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib -core-flag");
  is($build->runtime_prop->{libs_static}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib -core-flag-static");
};


subtest public_l => sub {

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

  my $build = alienfile q{

    use alienfile;

    share {

      plugin 'Download::Foo';

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

      build sub {
      };

      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';
      };

    };

  };

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

  is($build->runtime_prop->{cflags}, '-core-cflag');
  is($build->runtime_prop->{cflags_static}, '-core-cflag-static');

  is($build->runtime_prop->{libs}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib -lfoo -lbar -lbaz -core-flag");
  is($build->runtime_prop->{libs_static}, "-L$corpus/lib/auto/share/dist/Alien-libfoo2/lib -lfoo -lbar -lbaz -core-flag-static");
};


subtest list => sub {

  my $build = alienfile q{

    use alienfile;

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

    share {
    };

  };

  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::libfoo1'}, 0, 'set share require for Alien::libfoo1';
  is $build->requires('share')->{'Alien::libfoo2'}, 0, 'set share require for Alien::libfoo2';

};

subtest hash => sub {

  my $build = alienfile q{

    use alienfile;



( run in 0.909 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )