File Coverage

blib/lib/Test/local/lib/deps.pm
Criterion Covered Total %
statement 62 62 100.0
branch 3 10 30.0
condition 1 3 33.3
subroutine 16 16 100.0
pod 0 5 0.0
total 82 96 85.4


line stmt bran cond sub pod time code
1             package Test::local::lib::deps;
2 6     6   9176 use strict;
  6         10  
  6         208  
3 6     6   36 use warnings;
  6         10  
  6         162  
4 6     6   23696 use File::Temp qw/tempdir/;
  6         265288  
  6         482  
5 6     6   58 use Cwd;
  6         14  
  6         550  
6              
7             our $DIR;
8 6 0   6   256 BEGIN { $DIR = -w 't' ? 't' : -w "/tmp" ? "/tmp" : -w "." ? "." : undef }
    0          
    50          
9              
10 6     6   38 use base 'Test::More';
  6         14  
  6         7600  
11 6     6   208552 use Test::More;
  6         20  
  6         68  
12              
13             our @EXPORT = qw/ get_tmp hide_out unhide_out cpan_config show_fails/;
14              
15             sub import {
16 6     6   72 my ( $package, @params ) = @_;
17 6         28 my ($module) = caller;
18 6         20 my $tmp = grep { /^tmp$/ } @params;
  18         142  
19 6         14 my %params = grep { $_ !~ /^tmp$/ } @params;
  18         54  
20 6         16 my $import = delete $params{ 'import' };
21 6         14 my $plan = delete $params{ 'plan' };
22              
23             {
24 6 50 33 6   38 eval <
  6     6   14  
  6         406  
  6         32  
  6         8  
  6         94  
  6         12  
  6         450  
25             package $module;
26             use Exporter;
27             use Test::More ( \$tmp && !\$DIR ) ? ( skip_all => "No writable temp directory!" )
28             : \@\$plan;
29             \$import ? Exporter\::import( \$package, \@\$import )
30             : Exporter\::import( \$package, \@EXPORT );
31              
32             EOT
33 6 50       15946 die( $@ ) if $@;
34             }
35             }
36              
37             sub get_tmp {
38 6     6 0 3350 my $tmp = tempdir( 'test-XXXX', DIR => $DIR, CLEANUP => 1 );
39 6         5076 $tmp = getcwd() . "/$tmp";
40              
41 6         1180 mkdir("$tmp/CPAN");
42              
43 6         284 return $tmp;
44             }
45              
46             sub hide_out {
47 4     4 0 24 my ( $tmp ) = @_;
48 4         22 diag "Hiding output from cpan build... this could take some time.\n";
49 4         1080 diag "In event of error you can check $tmp/build.out for more information.\n";
50 6     6   5292 no warnings 'once';
  6         64  
  6         4344  
51 4         688 open( COPYSTD, ">&STDOUT" );
52 4         62 open( COPYERR, ">&STDERR" );
53 4         24 close( STDOUT );
54 4         20 close( STDERR );
55 4         428 open( STDOUT, ">", "$tmp/build.out" );
56 4         72 open( STDERR, ">&STDOUT" );
57             }
58              
59             sub unhide_out {
60 2     2 0 1438 close( STDOUT );
61 2         48 close( STDERR );
62 2         174 open( STDOUT, ">©STD" );
63 2         58 open( STDERR, ">©ERR" );
64             }
65              
66             sub cpan_config {
67 6     6 0 36 my ( $tmp ) = @_;
68             return {
69 6         154 cpan_home => "$tmp/CPAN",
70             build_dir => "$tmp/CPAN/build",
71             build_requires_install_policy => 'yes',
72             prerequisites_policy => 'follow',
73             urllist => [q[http://cpan.cpantesters.org/]],
74             auto_commit => q[0],
75             build_dir_reuse => q[0],
76             keep_source_where => "$tmp/CPAN/sources",
77             makepl_arg => "",
78             mbuildpl_arg => "",
79             }
80             }
81              
82             sub show_fails {
83 2     2 0 27694 my ( $tmp ) = @_;
84 2         284 open( my $LOG, "<", "$tmp/build.out" );
85 2         188 print STDERR join( "", my @list = <$LOG> );
86 2         270 close( $LOG );
87             }