Alien-Base
view release on metacpan or search on metacpan
t/alien_base.t view on Meta::CPAN
use Test2::Bundle::Extended;
use lib 'corpus/lib';
use Env qw( @PKG_CONFIG_PATH );
use File::Glob qw( bsd_glob );
use File::chdir;
use File::Spec;
eval {
use File::Temp qw( tempfile );
use File::Spec;
my($fh, $filename) = tempfile();
close $fh;
unlink $filename;
};
if(my $error = $@)
{
bail_out "tempfile failed: $error";
}
unshift @PKG_CONFIG_PATH, File::Spec->rel2abs(File::Spec->catdir( qw( corpus pkgconfig )));
subtest 'AB::MB sys install' => sub {
skip_all 'test requires Alien::Base::PkgConfig'
unless eval { require Alien::Base::PkgConfig; 1 };
require Alien::Foo1;
my $cflags = Alien::Foo1->cflags;
my $libs = Alien::Foo1->libs;
my $version = Alien::Foo1->version;
$libs =~ s{^\s+}{};
is $cflags, '-DFOO=stuff', "cflags: $cflags";
is $libs, '-lfoo1', "libs: $libs";
is $version, '3.99999', "version: $version";
};
subtest 'AB::MB share install' => sub {
skip_all 'test requires Alien::Base::PkgConfig'
unless eval { require Alien::Base::PkgConfig; 1 };
require Alien::Foo2;
my $cflags = Alien::Foo2->cflags;
my $libs = Alien::Foo2->libs;
my $version = Alien::Foo2->version;
ok $cflags, "cflags: $cflags";
ok $libs, "libs: $libs";
is $version, '3.2.1', "version: $version";
if($cflags =~ /-I(.*)$/)
{
ok -f "$1/foo2.h", "include path: $1";
}
else
{
fail "include path: ?";
}
t/alien_base.t view on Meta::CPAN
is( Alien::libfoo2->config('name'), 'foo', 'config.name' );
is( Alien::libfoo2->config('finished_installing'), T(), 'config.finished_installing' );
is(
[Alien::libfoo2->dynamic_libs],
array {
item match qr/libfoo.so$/;
item match qr/libfoo.so.2$/;
end;
},
'dynamic_libs',
);
is(
[Alien::libfoo2->bin_dir],
array {
item T();
end;
},
'bin_dir',
);
is( -f File::Spec->catfile(Alien::libfoo2->bin_dir,'foo-config'), T(), 'has a foo-config');
is( Alien::libfoo2->runtime_prop->{arbitrary}, 'two', 'runtime_prop' );
};
subtest 'build flags' => sub {
my %unix_flags = (
q{ -L/a/b/c -lz -L/a/b/c } => [ "-L/a/b/c", "-lz", "-L/a/b/c" ],
);
my %win_flags = (
q{ -L/a/b/c -lz -L/a/b/c } => [ "-L/a/b/c", "-lz", "-L/a/b/c" ],
q{ -LC:/a/b/c -lz -L"C:/a/b c/d" } => [ "-LC:/a/b/c", "-lz", "-LC:/a/b c/d" ],
q{ -LC:\a\b\c -lz } => [ q{-LC:\a\b\c}, "-lz" ],
);
subtest 'unix' => sub {
while ( my ($flag, $split) = each %unix_flags ) {
is( [ Alien::Base->split_flags_unix( $flag ) ], $split );
}
};
subtest 'windows' => sub {
while ( my ($flag, $split) = each %win_flags ) {
is( [ Alien::Base->split_flags_windows( $flag ) ], $split );
}
};
};
done_testing;
package
FFI::CheckLib;
use File::Glob qw( bsd_glob );
use File::chdir;
BEGIN { $INC{'FFI/CheckLib.pm'} = __FILE__ }
sub find_lib {
my %args = @_;
if($args{libpath})
{
return unless -d $args{libpath};
return sort do {
local $CWD = $args{libpath};
map { File::Spec->rel2abs($_) } bsd_glob('*.so*');
};
}
else
{
if($args{lib} eq 'foo')
{
return ('/usr/lib/libfoo.so', '/usr/lib/libfoo.so.1');
}
else
{
return;
}
}
}
( run in 1.443 second using v1.01-cache-2.11-cpan-70e19b8f4f1 )