forked from moose/Moose
-
Notifications
You must be signed in to change notification settings - Fork 0
/
moose-exporter.t
120 lines (96 loc) · 2.99 KB
/
moose-exporter.t
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
120
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;