RequireMethodModifiers policy
[gitmo/Perl-Critic-Dynamic-Moose.git] / t / DynamicMoose / RequireMethodModifiers.run
1 ## name No superclass
2 ## failures 0
3 ## cut
4
5 package Class;
6 use Moose;
7
8 sub foo {}
9 sub bar {}
10
11 #-----------------------------------------------------------------------------
12
13 ## name No overriding methods
14 ## failures 0
15 ## cut
16
17 package Parent;
18
19 sub parent {}
20
21 package Child;
22 use Moose;
23 extends 'Parent';
24
25 sub child {}
26
27 #-----------------------------------------------------------------------------
28
29 ## name Implicitly overrides a method
30 ## failures 1
31 ## cut
32
33 package Parent;
34
35 sub parent {}
36
37 package Child;
38 use Moose;
39 extends 'Parent';
40
41 sub parent {}
42
43 #-----------------------------------------------------------------------------
44
45 ## name Weirdly dispatching methods
46 ## failures 0
47 ## cut
48
49 package Parent;
50 use Moose;
51
52 sub BUILD {}
53 sub DEMOLISH {}
54
55 package Child;
56 use Moose;
57 extends 'Parent';
58
59 sub BUILD {}
60 sub DEMOLISH {}
61
62 #-----------------------------------------------------------------------------
63
64 ## name Make immutable
65 ## failures 0
66 ## cut
67
68 package Parent;
69 use Moose;
70
71 __PACKAGE__->meta->make_immutable;
72
73 package Child;
74 use Moose;
75 extends 'Parent';
76
77 __PACKAGE__->meta->make_immutable;
78
79 #-----------------------------------------------------------------------------
80
81 ## name Many modifiers
82 ## failures 0
83 ## cut
84
85 package Parent;
86 use Moose;
87
88 sub foo {}
89
90 sub ai { inner() }
91
92 sub os {}
93
94 package Child;
95 use Moose;
96 extends 'Parent';
97
98 before foo => sub {};
99 after  foo => sub {};
100 around foo => sub {};
101
102 augment ai => sub {};
103
104 override os => sub { super };
105
106 #-----------------------------------------------------------------------------
107
108 ## name Pull in a method from a role. Could go either way here.
109 ## failures 1
110 ## cut
111
112 package Parent;
113 use Moose;
114
115 sub foo {}
116
117 package Role;
118 use Moose::Role;
119
120 sub foo {}
121
122 package Child;
123 use Moose;
124 extends 'Parent';
125 with 'Role';
126
127 #-----------------------------------------------------------------------------
128
129 ## name Grandparent
130 ## failures 1
131 ## cut
132
133 package Grandparent;
134 use Moose;
135
136 sub foo {}
137
138 package Parent;
139 use Moose;
140 extends 'Grandparent';
141
142 sub bar {}
143
144 package Child;
145 use Moose;
146 extends 'Parent';
147
148 sub foo {}
149
150 #-----------------------------------------------------------------------------
151
152 ## name Grandparent with modifiers
153 ## failures 0
154 ## cut
155
156 package Grandparent;
157 use Moose;
158
159 sub foo {}
160
161 package Parent;
162 use Moose;
163 extends 'Grandparent';
164
165 before foo => sub {};
166
167 package Child;
168 use Moose;
169 extends 'Parent';
170
171 after foo => sub {};
172