Allow escape of the illegal name checks, darkpan has too much crap
[p5sagit/Class-Accessor-Grouped.git] / t / illegal_name.t
1 use Test::More tests => 4;
2 use Test::Exception;
3 use strict;
4 use warnings;
5 use lib 't/lib';
6
7 use AccessorGroupsSubclass;
8
9 {
10   my $warned = 0;
11   local $SIG{__WARN__} = sub {
12     $_[0] =~ /unwise/ ? $warned++ : warn(@_)
13   };
14
15   for (qw/DESTROY AUTOLOAD CLONE/) {
16     AccessorGroupsSubclass->mk_group_accessors(warnings => $_);
17   }
18
19   is($warned, 3, 'Correct amount of unise warnings');
20 }
21
22 {
23   my $warned = 0;
24   local $SIG{__WARN__} = sub {
25     $_[0] =~ /Installing illegal accessor/ ? $warned++ : warn(@_)
26   };
27
28   for (qw/666_one 666_two/) {
29     no warnings qw/once/;
30     no strict 'refs';
31
32     local $ENV{CAG_ILLEGAL_ACCESSOR_NAME_OK} = 1;
33     AccessorGroupsSubclass->mk_group_accessors(warnings => $_);
34   }
35
36   is($warned, 1, 'Correct amount of illegal installation warnings');
37 };
38
39 throws_ok { AccessorGroupsSubclass->mk_group_accessors(simple => '2wrvwrv;') }
40   qr/Illegal accessor name/;
41
42 throws_ok {
43   local $ENV{CAG_ILLEGAL_ACCESSOR_NAME_OK} = 1;
44   AccessorGroupsSubclass->mk_group_accessors(simple => "2wr\0vwrv;")
45 } qr/nulls should never appear/;
46 1;