show the first line here when testing with a harness
[gitmo/Moose.git] / t / bugs / moose_exporter_false_circular_reference_rt_63818.t
CommitLineData
c1d8ed59 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use 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
156done_testing;