Skip distro which requires rpm
[gitmo/Moose.git] / t / metaclasses / moose_exporter_trait_aliases.t
CommitLineData
f88cfe7c 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use Test::More;
5use Test::Moose;
f88cfe7c 6
7{
8 package Attribute::Trait::Awesome;
9 use Moose::Role;
10}
11
12BEGIN {
13 package Awesome::Exporter;
14 use Moose::Exporter;
15
16 Moose::Exporter->setup_import_methods(
17 trait_aliases => ['Attribute::Trait::Awesome'],
18 );
19}
20
21{
22 package Awesome;
23 use Moose;
24 BEGIN { Awesome::Exporter->import }
25
26 has foo => (
27 traits => [Awesome],
28 is => 'ro',
29 );
30 ::does_ok(__PACKAGE__->meta->get_attribute('foo'), 'Attribute::Trait::Awesome');
31
32 no Moose;
33 BEGIN { Awesome::Exporter->unimport }
34
35 my $val = eval "Awesome";
36 ::like($@, qr/Bareword "Awesome" not allowed/, "unimported properly");
37 ::is($val, undef, "unimported properly");
38}
39
40BEGIN {
41 package Awesome2::Exporter;
42 use Moose::Exporter;
43
44 Moose::Exporter->setup_import_methods(
45 trait_aliases => [
46 [ 'Attribute::Trait::Awesome' => 'Awesome2' ],
47 ],
48 );
49}
50
51{
52 package Awesome2;
53 use Moose;
54 BEGIN { Awesome2::Exporter->import }
55
56 has foo => (
57 traits => [Awesome2],
58 is => 'ro',
59 );
60 ::does_ok(__PACKAGE__->meta->get_attribute('foo'), 'Attribute::Trait::Awesome');
61
62 BEGIN { Awesome2::Exporter->unimport }
63
64 my $val = eval "Awesome2";
65 ::like($@, qr/Bareword "Awesome2" not allowed/, "unimported properly");
66 ::is($val, undef, "unimported properly");
67}
68
69{
70 package Awesome2::Rename;
71 use Moose;
72 BEGIN { Awesome2::Exporter->import(Awesome2 => { -as => 'emosewA' }) }
73
74 has foo => (
75 traits => [emosewA],
76 is => 'ro',
77 );
78 ::does_ok(__PACKAGE__->meta->get_attribute('foo'), 'Attribute::Trait::Awesome');
79
80 BEGIN { Awesome2::Exporter->unimport }
81
82 { our $TODO; local $TODO = "unimporting renamed subs currently doesn't work";
83 my $val = eval "emosewA";
84 ::like($@, qr/Bareword "emosewA" not allowed/, "unimported properly");
85 ::is($val, undef, "unimported properly");
86 }
87}
88
89done_testing;