Commit | Line | Data |
c1d8ed59 |
1 | #!/usr/bin/perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use Test::More; |
7 | use Test::Fatal; |
8 | |
9 | # OKSet1 |
10 | { |
11 | |
12 | package TESTING::MooseExporter::Rt63818::OKSet1::ModuleA; |
13 | use Moose (); |
14 | Moose::Exporter->setup_import_methods( |
15 | also => [ |
16 | 'Moose', |
17 | ] |
18 | ); |
19 | } |
20 | |
21 | # OKSet2 |
22 | { |
23 | |
24 | package TESTING::MooseExporter::Rt63818::OKSet2::ModuleA; |
25 | use Moose (); |
26 | Moose::Exporter->setup_import_methods( |
27 | also => [ |
28 | 'Moose', |
29 | ] |
30 | ); |
31 | |
32 | package TESTING::MooseExporter::Rt63818::OKSet2::ModuleB; |
33 | use Moose (); |
34 | Moose::Exporter->setup_import_methods( |
35 | also => [ |
36 | 'Moose', |
37 | ] |
38 | ); |
39 | } |
40 | |
41 | # OKSet3 |
42 | { |
43 | |
44 | package TESTING::MooseExporter::Rt63818::OKSet3::ModuleA; |
45 | use Moose (); |
46 | Moose::Exporter->setup_import_methods( |
47 | also => [ |
48 | 'Moose', |
49 | ] |
50 | ); |
51 | |
52 | package TESTING::MooseExporter::Rt63818::OKSet3::ModuleB; |
53 | use Moose (); |
54 | Moose::Exporter->setup_import_methods( |
55 | also => [ |
56 | 'Moose', |
57 | 'TESTING::MooseExporter::Rt63818::OKSet3::ModuleA', |
58 | ] |
59 | ); |
60 | } |
61 | |
62 | # OKSet4 |
63 | { |
64 | |
65 | package TESTING::MooseExporter::Rt63818::OKSet4::ModuleA; |
66 | use Moose (); |
67 | Moose::Exporter->setup_import_methods( |
68 | also => [ |
69 | 'Moose', |
70 | ] |
71 | ); |
72 | |
73 | package TESTING::MooseExporter::Rt63818::OKSet4::ModuleB; |
74 | use Moose (); |
75 | Moose::Exporter->setup_import_methods( |
76 | also => [ |
77 | 'Moose', |
78 | 'TESTING::MooseExporter::Rt63818::OKSet4::ModuleA', |
79 | ] |
80 | ); |
81 | |
82 | package TESTING::MooseExporter::Rt63818::OKSet4::ModuleC; |
83 | use Moose (); |
84 | Moose::Exporter->setup_import_methods( |
85 | also => [ |
86 | 'Moose', |
87 | 'TESTING::MooseExporter::Rt63818::OKSet4::ModuleA', |
88 | 'TESTING::MooseExporter::Rt63818::OKSet4::ModuleB', |
89 | ] |
90 | ); |
91 | } |
92 | |
93 | # OKSet5 |
94 | { |
95 | |
96 | package TESTING::MooseExporter::Rt63818::OKSet5::ModuleA; |
97 | use Moose (); |
98 | Moose::Exporter->setup_import_methods( |
99 | also => [ |
100 | 'Moose', |
101 | ] |
102 | ); |
103 | |
104 | package TESTING::MooseExporter::Rt63818::OKSet5::ModuleB; |
105 | use Moose (); |
106 | Moose::Exporter->setup_import_methods( |
107 | also => [ |
108 | 'Moose', |
109 | 'TESTING::MooseExporter::Rt63818::OKSet5::ModuleA', |
110 | ] |
111 | ); |
112 | |
113 | package TESTING::MooseExporter::Rt63818::OKSet5::ModuleC; |
114 | use Moose (); |
115 | Moose::Exporter->setup_import_methods( |
116 | also => [ |
117 | 'Moose', |
118 | 'TESTING::MooseExporter::Rt63818::OKSet5::ModuleA', |
119 | 'TESTING::MooseExporter::Rt63818::OKSet5::ModuleB', |
120 | ] |
121 | ); |
122 | |
123 | package TESTING::MooseExporter::Rt63818::OKSet5::ModuleD; |
124 | use Moose (); |
125 | Moose::Exporter->setup_import_methods( |
126 | also => [ |
127 | 'Moose', |
128 | 'TESTING::MooseExporter::Rt63818::OKSet5::ModuleA', |
129 | 'TESTING::MooseExporter::Rt63818::OKSet5::ModuleC', |
130 | ] |
131 | ); |
132 | } |
133 | |
134 | # NotOKSet1 |
135 | { |
136 | |
137 | package TESTING::MooseExporter::Rt63818::NotOKSet1::ModuleA; |
138 | use Moose (); |
139 | ::like( |
140 | ::exception { Moose::Exporter->setup_import_methods( |
141 | also => [ |
142 | 'Moose', |
143 | 'TESTING::MooseExporter::Rt63818::NotOKSet1::ModuleA', |
144 | ] |
145 | ) |
146 | }, |
147 | qr/\QCircular reference in 'also' parameter to Moose::Exporter between TESTING::MooseExporter::Rt63818::NotOKSet1::ModuleA and TESTING::MooseExporter::Rt63818::NotOKSet1::ModuleA/, |
148 | 'a single-hop circular reference in also dies with an error' |
149 | ); |
150 | } |
151 | |
152 | # Alas, I've not figured out how to craft a test which shows that we get the |
153 | # same error for multi-hop circularity... instead I get tests that die because |
154 | # one of the circularly-referenced things was not loaded. |
155 | |
156 | done_testing; |