1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
|
use strict;
use warnings;
use Test::More;
use Test::Fatal;
{
my $exception = exception {
package MooseX::NoAlso;
use Moose ();
Moose::Exporter->setup_import_methods(
also => ['NoSuchThing']
);
};
like(
$exception,
qr/\QPackage in also (NoSuchThing) does not seem to use Moose::Exporter (is it loaded?)/,
'a package which does not use Moose::Exporter in also dies with an error');
isa_ok(
$exception,
'Moose::Exception::PackageDoesNotUseMooseExporter',
'a package which does not use Moose::Exporter in also dies with an error');
is(
$exception->package,
"NoSuchThing",
'a package which does not use Moose::Exporter in also dies with an error');
}
{
my $exception = exception {
{
package MooseX::CircularAlso;
use Moose;
Moose::Exporter->setup_import_methods(
also => [ 'Moose', 'MooseX::CircularAlso' ],
);
}
};
like(
$exception,
qr/\QCircular reference in 'also' parameter to Moose::Exporter between MooseX::CircularAlso and MooseX::CircularAlso/,
'a circular reference in also dies with an error');
isa_ok(
$exception,
'Moose::Exception::CircularReferenceInAlso',
'a circular reference in also dies with an error');
is(
$exception->also_parameter,
"MooseX::CircularAlso",
'a circular reference in also dies with an error');
}
{
{
package My::SimpleTrait;
use Moose::Role;
sub simple { return 5 }
}
use Moose::Util::TypeConstraints;
my $exception = exception {
Moose::Util::TypeConstraints->import(
-traits => 'My::SimpleTrait' );
};
like(
$exception,
qr/\QCannot provide traits when Moose::Util::TypeConstraints does not have an init_meta() method/,
'cannot provide -traits to an exporting module that does not init_meta');
isa_ok(
$exception,
"Moose::Exception::ClassDoesNotHaveInitMeta",
'cannot provide -traits to an exporting module that does not init_meta');
is(
$exception->class_name,
"Moose::Util::TypeConstraints",
'cannot provide -traits to an exporting module that does not init_meta');
}
{
my $exception = exception {
{
package MooseX::BadTraits;
use Moose ();
Moose::Exporter->setup_import_methods(
trait_aliases => [{hello => 1}]
);
}
};
like(
$exception,
qr/HASH references are not valid arguments to the 'trait_aliases' option/,
"a HASH ref is given to trait_aliases");
isa_ok(
$exception,
"Moose::Exception::InvalidArgumentsToTraitAliases",
"a HASH ref is given to trait_aliases");
is(
$exception->package_name,
"MooseX::BadTraits",
"a HASH ref is given to trait_aliases");
}
done_testing;
|