Alien-Build
view release on metacpan or search on metacpan
t/alien_base.t view on Meta::CPAN
($dir) = [shellwords(Alien::libfoo2->libs_static)]->[0] =~ /^-L(.*)$/;
is(
-f path($dir)->child('libfoo.a'),
T(),
'-L directory points to libfoo.a location (static)',
);
};
is( Alien::libfoo2->version, '2.3.4', 'version' );
subtest 'install type' => sub {
is( Alien::libfoo2->install_type, 'share' );
is( Alien::libfoo2->install_type('system'), F() );
is( Alien::libfoo2->install_type('share'), T() );
is( Alien::libfoo2->is_system_install, F() );
is( Alien::libfoo2->is_share_install, T() );
};
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(
[Alien::libfoo2->dynamic_dir],
array {
item match qr /\bdynamic$/;
end;
},
'dynamic_dir',
);
is( -f path(Alien::libfoo2->bin_dir)->child('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 {
foreach my $flag (keys %unix_flags)
{
is( [ Alien::Base->split_flags_unix( $flag ) ], $unix_flags{$flag} );
}
};
subtest 'windows' => sub
{
foreach my $flag (keys %win_flags)
{
is( [ Alien::Base->split_flags_windows( $flag ) ], $win_flags{$flag} );
}
};
};
subtest 'ffi_name' => sub {
require Alien::libfoo1;
my @args_find_lib;
my $mock1 = mock 'FFI::CheckLib' => (
override => [
find_lib => sub {
@args_find_lib = @_;
('foo.dll','foo2.dll');
},
],
);
is( [Alien::libfoo1->dynamic_libs], ['foo.dll','foo2.dll'], 'call dynamic_libs' );
is( \@args_find_lib, [ lib => 'foo', libpath => [] ] );
my $mock2 = mock 'Alien::Base' => (
around => [
runtime_prop => sub {
my($orig, @args) = @_;
my $prop = $orig->(@args);
{ ffi_name => 'roger', %$prop };
},
],
);
is( [Alien::libfoo1->dynamic_libs], ['foo.dll','foo2.dll'], 'call dynamic_libs' );
is( \@args_find_lib, [ lib => 'roger' ] );
};
subtest 'test an alt install' => sub {
require Alien::libfoo1;
require Alien::libfoo2;
require Alien::libfoo3;
subtest 'default' => sub {
like( Alien::libfoo3->cflags, qr{-I.*Alien-libfoo3/include -DFOO=1} );
like( Alien::libfoo3->libs, qr{-L.*Alien-libfoo3/lib -lfoo} );
like( Alien::libfoo3->cflags_static, qr{-I.*Alien-libfoo3/include -DFOO=1 -DFOO_STATIC=1} );
like( Alien::libfoo3->libs_static, qr{-L.*Alien-libfoo3/lib -lfoo -lbar -lbaz} );
is( Alien::libfoo3->version, '2.3.4' );
is( Alien::libfoo3->runtime_prop->{arbitrary}, 'two');
};
( run in 0.588 second using v1.01-cache-2.11-cpan-df04353d9ac )