Alien-Build
view release on metacpan or search on metacpan
t/alien_build.t view on Meta::CPAN
subtest 'basic' => sub {
my $build = alienfile q{ use alienfile };
my $meta = $build->meta;
note(_dump $meta);
is( $build->load_requires, 1, 'empty loads okay' );
$meta->add_requires( 'any' => 'Foo::Bar::Baz' => '1.00');
is( $build->load_requires, 1, 'have it okay' );
ok $INC{'Foo/Bar/Baz.pm'};
note "inc=$INC{'Foo/Bar/Baz.pm'}";
$meta->add_requires( 'any' => 'Foo::Bar::Baz1' => '2.00');
eval { $build->load_requires };
my $error = $@;
isnt $error, '';
note "error=$error";
};
};
subtest 'hook' => sub {
my $build = alienfile filename => 'corpus/blank/alienfile';
my $meta = $build->meta;
subtest 'simple single working hook' => sub {
my @foo1;
my $props;
$meta->register_hook(
foo1 => sub {
@foo1 = @_;
my($build) = @_;
$props = $build->hook_prop;
return 42;
}
);
is( $build->hook_prop, undef );
is( $build->_call_hook(foo1 => ('roger', 'ramjet')), 42);
is(
$props,
hash {
field name => 'foo1';
etc;
},
);
is( $build->hook_prop, undef );
is(
\@foo1,
array {
item object {
prop blessed => ref $build;
call sub { shift->isa('Alien::Build') } => T();
};
item 'roger';
item 'ramjet';
}
);
};
my $exception_count = 0;
$meta->register_hook(
foo2 => sub {
$exception_count++;
die "throw exception";
}
);
subtest 'single failing hook' => sub {
$exception_count = 0;
eval { $build->_call_hook(foo2 => ()) };
like $@, qr/throw exception/;
note "error = $@";
is $exception_count, 1;
};
subtest 'one fail, one okay' => sub {
$exception_count = 0;
$meta->register_hook(
foo2 => sub {
99;
}
);
is( $build->_call_hook(foo2 => ()), 99);
is $exception_count, 1;
};
subtest 'invalid hook' => sub {
eval { $build->_call_hook(foo3 => ()) };
like $@, qr/No hooks registered for foo3/;
};
subtest 'command list hook' => sub {
$meta->register_hook(
foo4 => [[$^X, -e => 'print @ARGV', 'hello', ' ', 'world']],
);
my $out = capture_merged { $build->_call_hook('foo4') };
note $out;
like $out, qr/hello world/s;
( run in 1.438 second using v1.01-cache-2.11-cpan-6aa56a78535 )