add test to ensure attributes have types
[scpubgit/DX.git] / xt / all_attributes_typed.t
1 use strictures 2;
2 use Test::More;
3 use IO::All;
4 use Role::Tiny;
5 use Moose;
6
7 sub check_module {
8   my ($module) = @_;
9   if ($module->isa('Moo::Object')) {
10     my $meta = $module->meta;
11     foreach my $name ($meta->get_attribute_list) {
12       my $attr = $meta->get_attribute($name);
13       if (my $tc = $attr->type_constraint) {
14         pass("${module}->${name} isa ${tc}");
15       } else {
16         fail("${module}->${name} UNTYPED");
17       }
18     }
19   }
20 }
21
22 foreach my $file (io('lib')->all_files(0)) {
23   (my $name = $file->name) =~ s/^lib\///;
24   require $name;
25   (my $module = join '::', split '/', $name) =~ s/\.pm$//;
26   check_module($module);
27 }
28
29 done_testing;