File Coverage

blib/lib/Modulino/Demo2.pm
Criterion Covered Total %
statement 48 57 84.2
branch 1 2 50.0
condition n/a
subroutine 12 16 75.0
pod 3 3 100.0
total 64 78 82.0


line stmt bran cond sub pod time code
1             package Modulino::Demo2;
2 1     1   719 use strict;
  1         2  
  1         23  
3 1     1   3 use utf8;
  1         2  
  1         4  
4              
5 1     1   20 use v5.14.2;
  1         2  
6              
7 1     1   4 use warnings;
  1         1  
  1         323  
8              
9             our $VERSION = '1.002';
10              
11             UNITCHECK {
12             sub _running_under_docreader {
13             !! $ENV{PERLDOC}
14 1     1   6 }
15              
16             sub _running_under_tester {
17             !! $ENV{HARNESS_ACTIVE}
18 1     1   2 }
19              
20             sub _running_as_app {
21             defined scalar caller
22 0     0   0 }
23              
24             my $method = do {
25             if( _running_under_docreader() ) { 'doc' } # reading docs
26             elsif( _running_under_tester() ) { 'test' } # testing
27             elsif( _running_as_app() ) { 'run' } # running the application
28             else { undef } #everything else
29             };
30              
31             __PACKAGE__->$method(@ARGV) if defined $method;
32             }
33              
34             =encoding utf8
35              
36             =head1 NAME
37              
38             Modulino::Demo2 - A demonstration of modulino ideas
39              
40             =head1 SYNOPSIS
41              
42             use Modulino::Demo;
43              
44             =head1 DESCRIPTION
45              
46             =over 4
47              
48             =item run
49              
50             =cut
51              
52             sub run {
53 0     0 1 0 say "Running as program";
54             }
55              
56             sub _test_run {
57 1     1   6 require Test::More;
58              
59 1         4 Test::More::pass();
60 1         232 Test::More::pass();
61              
62             SKIP: {
63 1         226 Test::More::skip( "These tests don't work", 2 );
  1         4  
64 0         0 Test::More::fail();
65 0         0 Test::More::fail();
66             }
67             }
68              
69             =back
70              
71             =head2 Testing
72              
73             =over 4
74              
75             =item test
76              
77             Run all of the subroutines that start with C<_test_>. Each subroutine
78             is wrapped in a C subtest.
79              
80             =cut
81              
82             sub test {
83 1     1 1 23 say "Running as test";
84              
85 1         4 my( $class ) = @_;
86 1         3 my @tests = $class->_get_tests;
87              
88 1         5 require Test::More;
89              
90 1         2 foreach my $test ( @tests ) {
91             Test::More::subtest( $test => sub {
92 2     2   1264 my $rc = eval { $class->$test(); 1 };
  2         7  
  2         2640  
93 2 50       8 Test::More::diag( $@ ) unless defined $rc;
94 2         961 } );
95             }
96             }
97              
98             sub _get_tests {
99 1     1   2 my( $class ) = @_;
100 1     1   6 no strict 'refs';
  1         1  
  1         217  
101 1         3 my $stub = $class . '::';
102             my @tests =
103 2         2 grep { defined &{"$stub$_"} }
  2         7  
104 14         21 grep { 0 == index $_, '_test_' }
105 1         1 keys %{ "$stub" };
  1         7  
106              
107 1         8 say "Tests are @tests";
108 1         4 @tests;
109             }
110              
111             =back
112              
113             =head2 Reading the docs
114              
115             =over 4
116              
117             =item doc
118              
119             =cut
120              
121             sub doc {
122 0     0 1 0 say "Running as docs";
123 0         0 require Pod::Perldoc;
124              
125             *Pod::Perldoc::program_name = sub {
126 0     0   0 'perldoc';
127 0         0 };
128              
129 0         0 Pod::Perldoc->new( args => [ __FILE__ ] )->process();
130             }
131              
132             sub _test_doc {
133 1     1   4 require Test::More;
134 1         10 require Test::Pod;
135 1         15 require Test::Pod::Coverage;
136 1         2 our $TODO;
137              
138 1         14 Test::Pod::pod_file_ok( __FILE__ );
139             TODO: {
140 1         7074 local $TODO = "Pod::Coverage can't find the pod";
  1         2  
141 1         4 Test::Pod::Coverage::pod_coverage_ok( __PACKAGE__ );
142             }
143             }
144              
145             =back
146              
147             =head1 TO DO
148              
149              
150             =head1 SEE ALSO
151              
152              
153             =head1 SOURCE AVAILABILITY
154              
155             This source is in Github:
156              
157             https://github.com/briandfoy/modulino-demo/
158              
159             =head1 AUTHOR
160              
161             brian d foy, C<< >>
162              
163             =head1 COPYRIGHT AND LICENSE
164              
165             Copyright © 2012-2018, brian d foy . All rights reserved.
166              
167             You may redistribute this under the terms of the Artistic License 2.0.
168              
169             =cut
170              
171             1;