The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More;
use Test::Exception;

lives_ok {
	package Local::Iface1;
	use MooseX::Interface;
	requires 'foo';
	one;
};

throws_ok {
	package Local::Iface2;
	use MooseX::Interface;
	requires 'foo';
	sub bar { 1 };
	one;
} qr{method defined within interface}i;

throws_ok {
	package Local::Iface3;
	use MooseX::Interface;
	requires 'foo';
	__PACKAGE__->meta->add_after_method_modifier(bar => sub { 1 });
	one;
} qr{method modifier defined within interface}i;

lives_ok {
	package Local::Iface4;
	use MooseX::Interface;
	requires 'foo';
	sub bar { 1 };
	# NOT: one
}; 

throws_ok {
	package Local::Class;
	use Moose;
	with qw( Local::Iface4 );
} qr{method defined within interface}i;

done_testing();