File Coverage

build_lib/__MAF/Test.pm
Criterion Covered Total %
statement 832 854 97.4
branch 9 14 64.2
condition 8 10 80.0
subroutine 314 334 94.0
pod 0 88 0.0
total 1163 1300 89.4


line stmt bran cond sub pod time code
1             package __MAF::Test;
2              
3 1     1   200691 use Exporter;
  1         3  
  1         462  
4             our @ISA = qw;
5              
6             our @EXPORT = qw<_class_generator _role_generator _randomName>;
7              
8             sub _randomName {
9 121     121   1636 my $chars = [ 'A' .. 'Z', 'a' .. 'z', '0' .. '9' ];
10 121         222 my $name = '';
11 121         639 $name .= $chars->[ rand( scalar @$chars ) ] for 1 .. 6;
12 121         715 return "Tst_" . $name;
13             }
14              
15             sub _class_generator {
16 45     45   369178 my (%testParams) = @_;
17 45         143 my $prefix = "__MAFT::Class::";
18 45   66     232 my $className = $prefix . ( $testParams{name} || _randomName );
19              
20             #diag "CLASS NAME:" . $className;
21              
22 45   100     154 my $body = $testParams{body} // '';
23 45         62 my $extends = '';
24              
25 45 100       122 if ( $testParams{extends} ) {
26             my @extList =
27             ref( $testParams{extends} )
28 0         0 ? @{ $testParams{extends} }
29 2 50       8 : ( $testParams{extends} );
30             $extends =
31 2         4 "extends qw<" . join( " ", map { $prefix . $_ } @extList ) . ">;";
  2         7  
32             }
33              
34 1     1 0 8 my $rc = eval <
  1     1 0 2  
  1     1 0 7  
  1     1 0 311  
  1     1 0 2  
  1     1 0 7  
  1     1 0 5  
  1     1 0 2  
  1     1 0 5  
  1     1 0 391  
  1     1 0 2  
  1     1 0 7  
  1     1 0 7  
  1     1 0 2  
  1     1 0 5  
  1     1 0 245  
  1     1 0 2  
  1     1 0 6  
  1     1 0 6  
  1     1 0 3  
  1     1 0 5  
  1     1 0 284  
  1     1 0 2  
  1     1 0 6  
  1     1 0 6  
  1     1 0 2  
  1     1 0 6  
  1     1 0 285  
  1     1 0 2  
  1     1 0 6  
  1     1 0 10  
  1     1 0 3  
  1     1 0 8  
  1     1 0 372  
  1     1 0 2  
  1     1 0 7  
  1     1 0 9  
  1     1 0 3  
  1     1 0 7  
  1     1 0 352  
  1     1 0 2  
  1     1 0 6  
  1     1 0 12  
  1     1 0 123  
  1     1   10  
  1     1   338  
  1     1   2  
  1     1   6  
  1     1   6  
  1     1   2  
  1     1   4  
  1     1   287  
  1     1   1  
  1     1   5  
  1     1   12  
  1     1   2  
  1     1   9  
  1     1   433  
  1     1   2  
  1     1   9  
  1     1   11  
  1     1   2  
  1     1   11  
  1     1   457  
  1     1   3  
  1     1   9  
  1     1   10  
  1     1   3  
  1     1   10  
  1     1   460  
  1     1   2  
  1     1   10  
  1     1   9  
  1     1   4  
  1     1   7  
  1     1   434  
  1     1   2  
  1     1   1850  
  1     1   10  
  1     1   11  
  1     1   9  
  1     1   421  
  1     1   2  
  1     1   8  
  1     1   10  
  1     1   3  
  1     1   6  
  1     1   447  
  1     1   3  
  1     2   18  
  1     2   10  
  1     2   3  
  1     2   8  
  1     2   404  
  1     1   2  
  1     1   8  
  1     1   8  
  1     1   3  
  1     1   6  
  1     2   385  
  1     2   3  
  1     1   7  
  1     2   7  
  1     2   10  
  1     2   7  
  1     2   361  
  1     2   2  
  1     2   6  
  1     2   7  
  1     2   3  
  1     0   6  
  1     2   416  
  1     0   3  
  1     0   6  
  1     0   7  
  1     2   3  
  1     2   7  
  1     2   371  
  1     2   4  
  1     0   6  
  1     2   10  
  1     2   2  
  1     1   6  
  1     3   385  
  1     1   2  
  1     1   7  
  1     1   8  
  1     1   3  
  1     1   7  
  1     1   309  
  1     2   2  
  1     2   6  
  1     2   6  
  1     0   2  
  1     2   3  
  1     2   5  
  1     0   3  
  1     0   4  
  1     2   278  
  1     2   2  
  1     0   4  
  1     2   272  
  1     0   1  
  1     2   152  
  1     2   6  
  1         2  
  1         4  
  1         5  
  1         2  
  1         5  
  1         6  
  1         3  
  1         4  
  1         251  
  1         2  
  1         5  
  1         7  
  1         2  
  1         4  
  1         260  
  1         3  
  1         4  
  1         7  
  1         1  
  1         4  
  1         263  
  1         2  
  1         5  
  1         5  
  1         2  
  1         5  
  1         263  
  1         2  
  1         4  
  1         7  
  1         1  
  1         6  
  1         305  
  1         2  
  1         5  
  1         7  
  1         2  
  1         6  
  1         310  
  1         2  
  1         6  
  1         6  
  1         2  
  1         5  
  1         279  
  1         1  
  1         6  
  1         6  
  1         1  
  1         5  
  1         255  
  1         2  
  1         5  
  1         6  
  1         2  
  1         7  
  1         296  
  1         2  
  1         7  
  1         6  
  1         1  
  1         6  
  1         257  
  1         2  
  1         4  
  1         6  
  1         1  
  1         6  
  1         259  
  1         1  
  1         6  
  1         6  
  1         2  
  1         5  
  1         258  
  1         2  
  1         4  
  1         5  
  1         1  
  1         5  
  1         258  
  1         2  
  1         5  
  1         7  
  1         2  
  1         8  
  1         310  
  1         1  
  1         6  
  1         7  
  1         1  
  1         5  
  1         273  
  1         2  
  1         5  
  1         7  
  1         2  
  1         6  
  1         301  
  1         1  
  1         6  
  1         6  
  1         1  
  1         6  
  1         273  
  1         3  
  1         5  
  1         7  
  1         1  
  1         5  
  1         277  
  1         2  
  1         5  
  1         8  
  1         2  
  1         7  
  1         323  
  1         2  
  1         7  
  45         3045  
  1         801  
  1         23  
  2         683  
  2         36  
  2         662  
  2         22  
  2         707  
  2         21  
  2         679  
  2         21  
  2         666  
  2         22  
  1         790  
  1         17  
  1         846  
  1         17  
  1         785  
  1         17  
  1         748  
  1         16  
  1         661  
  1         16  
  2         1308  
  2         31  
  2         27  
  2         19  
  1         717  
  1         18  
  2         639  
  2         22  
  2         660  
  2         20  
  2         652  
  2         22  
  2         640  
  2         69  
  2         656  
  2         23  
  2         1365  
  2         1328  
  2         1308  
  0         0  
  2         1233  
  0         0  
  0         0  
  0         0  
  2         1224  
  2         1252  
  2         1236  
  2         1398  
  0         0  
  2         1251  
  2         1336  
  1         792  
  3         769  
  3         8  
  3         24  
  1         1002  
  1         28  
  1         1122  
  1         27  
  1         1037  
  1         24  
  1         865  
  1         23  
  1         895  
  1         23  
  1         932  
  1         21  
  2         562  
  2         526  
  2         548  
  0         0  
  2         549  
  2         569  
  0         0  
  0         0  
  2         578  
  2         538  
  0         0  
  2         641  
  0         0  
  2         547  
  2         610  
35             package $className;
36              
37             use Moo;
38             $extends
39              
40             $body
41              
42             1;
43             CLASS
44 45 50       160 die $@ if $@;
45 45         174 return $className;
46             }
47              
48             sub _role_generator {
49 43     43   394602 my (%testParams) = @_;
50 43         85 my $prefix = "__MAFT::Role::";
51 43   66     214 my $testName = $testParams{name} || _randomName;
52 43         126 my $roleName = $prefix . $testName;
53 43         85 my $className = "__MAFT::RoleClass::" . $testName;
54              
55 43   100     108 my $body = $testParams{body} // '';
56 43         61 my $with = '';
57              
58 43 100       126 if ( $testParams{extends} ) {
59             my @extList =
60             ref( $testParams{extends} )
61 0         0 ? @{ $testParams{extends} }
62 1 50       5 : ( $testParams{extends} );
63 1         3 $with = "with qw<" . join( " ", map { $prefix . $_ } @extList ) . ">;";
  1         6  
64             }
65              
66 43         146 my $code = <
67             package ${roleName};
68              
69             use Moo::Role;
70             $with
71              
72             $body
73              
74             1;
75             ROLE
76 1     1 0 434 my $rc = eval $code;
  1     1 0 11696  
  1     1 0 5  
  1     1 0 627  
  1     1 0 3  
  1     1 0 6  
  1     1 0 9  
  1     1 0 2  
  1     1 0 6  
  1     1 0 303  
  1     1 0 2  
  1     1 0 5  
  1     1 0 6  
  1     1 0 2  
  1     1 0 7  
  1     1 0 289  
  1     1 0 1  
  1     1 0 5  
  1     1 0 6  
  1     1 0 2  
  1     1 0 5  
  1     1 0 265  
  1     1 0 1  
  1     1 0 5  
  1     1 0 52  
  1     1 0 5  
  1     1 0 5  
  1     1 0 265  
  1     1 0 1  
  1     1 0 6  
  1     1 0 5  
  1     1 0 2  
  1     1 0 4  
  1     1 0 281  
  1     1 0 2  
  1     1 0 4  
  1     1 0 7  
  1     1 0 2  
  1     1 0 8  
  1     1 0 350  
  1     1 0 2  
  1     1 0 6  
  1     1 0 8  
  1     1 0 2  
  1     1   6  
  1     1   341  
  1     1   1  
  1     1   7  
  1     1   9  
  1     1   2  
  1     1   7  
  1     1   335  
  1     1   2  
  1     1   7  
  1     1   8  
  1     1   2  
  1     1   7  
  1     1   308  
  1     1   2  
  1     1   6  
  1     1   7  
  1     1   1  
  1     1   7  
  1     1   310  
  1     1   2  
  1     1   6  
  1     1   5  
  1     1   3  
  1     1   5  
  1     1   309  
  1     1   1  
  1     1   4  
  1     1   7  
  1     1   2  
  1     1   7  
  1     1   296  
  1     1   1  
  1     1   6  
  1     1   8  
  1     1   2  
  1     1   6  
  1     1   303  
  1     1   2  
  1     1   5  
  1     1   7  
  1     1   1  
  1     2   7  
  1     1   302  
  1     1   1  
  1     1   7  
  1     2   6  
  1     2   1  
  1     2   6  
  1     2   349  
  1     1   2  
  1     1   6  
  1     2   7  
  1     2   2  
  1     1   7  
  1     2   325  
  1     2   2  
  1     2   7  
  1     2   8  
  1     2   2  
  1     2   6  
  1     2   324  
  1     0   1  
  1     2   7  
  1     2   8  
  1     2   2  
  1     2   8  
  1     2   374  
  1     0   2  
  1     0   8  
  1     0   62  
  1     2   2  
  1     2   7  
  1     2   297  
  1     0   9  
  1     1   8  
  1     3   7  
  1     1   2  
  1     1   6  
  1     1   319  
  1     1   2  
  1     1   6  
  1     1   9  
  1     2   2  
  1     2   8  
  1     0   339  
  1     2   1  
  1     2   7  
  1     0   7  
  1     2   1  
  1     2   6  
  1     2   306  
  1     2   2  
  1     2   6  
  1     0   6  
  1     0   2  
  1     0   6  
  1     2   290  
  1         2  
  1         6  
  1         8  
  1         3  
  1         8  
  1         433  
  1         3  
  1         14  
  1         7  
  1         1  
  1         8  
  1         423  
  1         2  
  1         6  
  1         22  
  1         2  
  1         8  
  1         319  
  1         2  
  1         8  
  1         11  
  1         3  
  1         9  
  1         513  
  1         3  
  1         8  
  1         9  
  1         2  
  1         7  
  1         411  
  1         2  
  1         5  
  1         6  
  1         2  
  1         5  
  1         322  
  1         1  
  1         6  
  1         9  
  1         1  
  1         10  
  1         328  
  1         1  
  1         7  
  1         7  
  1         2  
  1         6  
  1         332  
  1         2  
  1         7  
  1         7  
  1         2  
  1         7  
  1         308  
  1         2  
  1         6  
  1         7  
  1         2  
  1         6  
  1         273  
  1         2  
  1         5  
  1         6  
  1         2  
  1         4  
  1         341  
  1         1  
  1         5  
  1         14  
  1         3  
  1         12  
  1         6  
  1         2  
  1         7  
  1         275  
  1         2  
  1         7  
  1         7  
  1         1  
  1         3  
  1         7  
  1         2  
  1         6  
  1         275  
  1         1  
  1         6  
  1         7  
  1         2  
  1         5  
  1         295  
  1         2  
  1         5  
  1         268  
  1         3  
  1         144  
  1         6  
  1         1  
  1         6  
  1         278  
  1         2  
  1         4  
  1         6  
  1         2  
  1         5  
  1         308  
  1         1  
  1         6  
  1         8  
  1         3  
  1         8  
  1         427  
  1         3  
  1         6  
  43         2800  
  1         684  
  1         16  
  2         771  
  2         23  
  1         681  
  1         15  
  1         663  
  1         15  
  1         664  
  1         15  
  2         651  
  2         22  
  2         727  
  2         24  
  2         706  
  2         21  
  2         684  
  2         21  
  1         696  
  1         15  
  1         701  
  1         15  
  2         1288  
  2         31  
  2         27  
  2         17  
  1         748  
  1         17  
  2         712  
  2         22  
  2         873  
  2         30  
  2         672  
  2         22  
  2         684  
  2         23  
  2         663  
  2         36  
  2         1313  
  2         1295  
  0         0  
  2         1298  
  2         1259  
  2         1420  
  2         1553  
  2         1281  
  0         0  
  0         0  
  0         0  
  2         1361  
  2         1327  
  2         1257  
  0         0  
  1         845  
  3         784  
  3         8  
  3         25  
  1         697  
  1         16  
  1         951  
  1         17  
  1         720  
  1         16  
  1         709  
  1         15  
  1         696  
  1         16  
  1         674  
  1         16  
  2         595  
  2         729  
  0         0  
  2         562  
  2         588  
  0         0  
  2         534  
  2         636  
  2         590  
  2         538  
  2         685  
  0         0  
  0         0  
  0         0  
  2         556  
77 43 50       142 die $@ if $@;
78              
79 1     1   509 $rc = eval <
  1     1   1975  
  1     1   3  
  1     1   5  
  1     1   2  
  1     1   9  
  1     1   6  
  1     1   2  
  1     1   6  
  1     1   6  
  1     1   25  
  1     1   6  
  1     1   5  
  1     1   1  
  1     1   6  
  1     1   9  
  1     1   2  
  1     1   6  
  1     1   6  
  1     1   1  
  1     1   6  
  1     1   8  
  1     1   3  
  1     1   8  
  1     1   5  
  1     1   2  
  1     1   6  
  1     1   6  
  1     1   2  
  1     1   5  
  1     1   5  
  1     1   2  
  1     1   5  
  1     1   6  
  1     1   1  
  1     1   4  
  1     1   6  
  1     1   1  
  1     1   7  
  1     1   6  
  1     1   1  
  1     1   6  
  1     1   5  
  1         2  
  1         6  
  1         5  
  1         9  
  1         6  
  1         7  
  1         2  
  1         6  
  1         5  
  1         2  
  1         6  
  1         5  
  1         2  
  1         5  
  1         5  
  1         1  
  1         5  
  1         5  
  1         2  
  1         5  
  1         5  
  1         2  
  1         6  
  1         6  
  1         1  
  1         6  
  1         6  
  1         1  
  1         6  
  1         6  
  1         1  
  1         6  
  1         5  
  1         2  
  1         6  
  1         5  
  1         2  
  1         6  
  1         5  
  1         1  
  1         6  
  1         7  
  1         3  
  1         7  
  1         5  
  1         1  
  1         5  
  1         5  
  1         1  
  1         6  
  1         4  
  1         2  
  1         7  
  1         6  
  1         2  
  1         5  
  1         6  
  1         6  
  1         7  
  1         6  
  1         1  
  1         4  
  1         6  
  1         2  
  1         6  
  1         10  
  1         3  
  1         8  
  1         5  
  1         1  
  1         4  
  1         5  
  1         1  
  1         5  
  1         5  
  1         2  
  1         5  
  1         5  
  1         3  
  1         5  
  1         5  
  1         2  
  1         4  
  1         7  
  1         4  
  1         7  
  43         2174  
80             package ${className};
81              
82             use Moo;
83             with qw<${roleName}>;
84              
85             1;
86             CLASS
87 43 50       140 die $@ if $@;
88 43         196 return $className;
89             }
90              
91             1;