The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! perl

use Test::More;
use Test::Trap qw/ trap $trap :flow :stderr(systemsafe) /;

use MooseX::amine;
use lib './t/lib';

my @r = trap { MooseX::amine->new() };
is( $trap->leaveby, 'die', 'Empty constructor dies' );
like( $trap->die, qr/Need to provide 'module' or 'path'/,
  'Empty constructor error message' );

@r = trap { MooseX::amine->new( 'Foo::Bar::Baz' ) };
is( $trap->leaveby, 'die', 'Unfound module in constructor dies' );
like( $trap->die, qr/Can't locate Foo.Bar.Baz\.pm in \@INC/,
  'Unfound module in constructor error message' );

@r = trap { MooseX::amine->new({ path => 'foo/bar/baz.pm' }) };
is( $trap->leaveby, 'die', 'Unfound path in constructor dies' );
like( $trap->die, qr/Can't open 'foo.bar.baz\.pm' for reading/,
  'Unfound path in constructor error message' );

@r = trap { MooseX::amine->new({ path => './t/lib/Test/Bad/Foo.pm' }) };
is( $trap->leaveby, 'die', 'Module/path mismatch in constructor dies' );
like( $trap->die, qr/Can't locate Bar\.pm in \@INC/,
  'Module/path mismatch in constructor error message' );

done_testing();