File Coverage

blib/lib/SmokeRunner/Multi/Reporter/Smolder.pm
Criterion Covered Total %
statement 41 41 100.0
branch 5 6 83.3
condition 1 3 33.3
subroutine 10 10 100.0
pod 2 2 100.0
total 59 62 95.1


line stmt bran cond sub pod time code
1             package SmokeRunner::Multi::Reporter::Smolder;
2             BEGIN {
3 1     1   22597 $SmokeRunner::Multi::Reporter::Smolder::AUTHORITY = 'cpan:YANICK';
4             }
5             {
6             $SmokeRunner::Multi::Reporter::Smolder::VERSION = '0.19';
7             }
8             #ABSTRACT: Reports test runs to a Smolder installation
9              
10 1     1   11 use strict;
  1         3  
  1         36  
11 1     1   5 use warnings;
  1         2  
  1         36  
12              
13 1     1   5 use base 'SmokeRunner::Multi::Reporter';
  1         1  
  1         639  
14              
15 1     1   1245 use File::Temp qw( tempdir );
  1         25133  
  1         64  
16 1     1   779 use File::Which qw( which );
  1         1018  
  1         65  
17 1     1   563 use SmokeRunner::Multi::SafeRun qw( safe_run );
  1         3  
  1         68  
18 1     1   817 use YAML::Syck qw( Dump );
  1         2337  
  1         408  
19              
20              
21             my @SmolderKeys = qw( server username password );
22              
23             sub new
24             {
25 4     4 1 6982 my $class = shift;
26              
27 4         53 my $self = $class->SUPER::new(@_);
28              
29 4         88 my $smolder_config = SmokeRunner::Multi::Config->instance()->smolder();
30              
31 4         25 for my $k (@SmolderKeys)
32             {
33 10 100       65 die "No config item for smolder $k in config"
34             unless $smolder_config->{$k};
35             }
36              
37 3 100       31 die "Runner must be a TAPArchive runner"
38             unless $self->runner()->isa('SmokeRunner::Multi::Runner::TAPArchive');
39              
40 2         25 $self->{smolder} = $smolder_config;
41              
42 2         16 return $self;
43             }
44              
45             sub report
46             {
47 1     1 1 33 my $self = shift;
48              
49 1         5 my @params;
50 1         7 for my $k (@SmolderKeys)
51             {
52 3         9 push @params, '--' . $k;
53 3         28 push @params, $self->{smolder}->{$k};
54             }
55              
56 1         6 push @params, '--project', $self->runner()->set()->name();
57              
58 1         39 my $file = $self->runner()->tap_archive_file();
59 1         13 push @params, '--file', $file;
60              
61 1         5 my $stderr_buffer;
62             my $stdout_buffer;
63 1         13 safe_run
64             ( command => 'smolder_smoke_signal',
65             args => \@params,
66             stdout_buffer => \$stdout_buffer,
67             stderr_buffer => \$stderr_buffer,
68             );
69              
70 1 50 33     17 die "Error running smolder_smoke_signal:\n$stderr_buffer\n"
71             if defined $stderr_buffer && length $stderr_buffer;
72             }
73              
74              
75             1;
76              
77             __END__