Import t/050_metaclass from Moose
[gitmo/Mouse.git] / t / 050_metaclasses / failing / 014_goto_moose_import.t
CommitLineData
41888e7d 1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 8;
7use Test::Exception;
8
9# Some packages out in the wild cooperate with Mouse by using goto
10# &Mouse::import. we want to make sure it still works.
11
12{
13 package MouseAlike1;
14
15 use strict;
16 use warnings;
17
18 use Mouse ();
19
20 sub import {
21 goto &Mouse::import;
22 }
23
24 sub unimport {
25 goto &Mouse::unimport;
26 }
27}
28
29{
30 package Foo;
31
32 MouseAlike1->import();
33
34 ::lives_ok( sub { has( 'size', is => 'bare' ) },
35 'has was exported via MouseAlike1' );
36
37 MouseAlike1->unimport();
38}
39
40ok( ! Foo->can('has'),
41 'No has sub in Foo after MouseAlike1 is unimported' );
42ok( Foo->can('meta'),
43 'Foo has a meta method' );
44isa_ok( Foo->meta(), 'Mouse::Meta::Class' );
45
46
47{
48 package MouseAlike2;
49
50 use strict;
51 use warnings;
52
53 use Mouse ();
54
55 my $import = \&Mouse::import;
56 sub import {
57 goto $import;
58 }
59
60 my $unimport = \&Mouse::unimport;
61 sub unimport {
62 goto $unimport;
63 }
64}
65
66{
67 package Bar;
68
69 MouseAlike2->import();
70
71 ::lives_ok( sub { has( 'size', is => 'bare' ) },
72 'has was exported via MouseAlike2' );
73
74 MouseAlike2->unimport();
75}
76
77
78ok( ! Bar->can('has'),
79 'No has sub in Bar after MouseAlike2 is unimported' );
80ok( Bar->can('meta'),
81 'Bar has a meta method' );
82isa_ok( Bar->meta(), 'Mouse::Meta::Class' );