-
Notifications
You must be signed in to change notification settings - Fork 24
/
TAPHTMLMatrix.pm
91 lines (77 loc) · 2.32 KB
/
TAPHTMLMatrix.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package Smolder::TAPHTMLMatrix;
use strict;
use warnings;
use Carp qw/croak/;
use File::Spec::Functions qw(catdir catfile tmpdir);
use File::Path;
use URI::file;
use Template;
use Smolder::Conf qw(TemplateDir);
use Smolder::Control;
use Template::Plugin::Cycle;
our $TMPL = Template->new(
COMPILE_DIR => tmpdir(),
COMPILE_EXT => '.ttc',
INCLUDE_PATH => TemplateDir,
FILTERS => {
pass_fail_color => \&Smolder::Util::pass_fail_color,
format_time => \&Smolder::Util::format_time,
},
);
# use Smolder::Control's version
sub static_url {
return Smolder::Control->static_url(shift);
}
sub new {
my ($pkg, %args) = @_;
my $self = bless(\%args, $pkg);
return $self;
}
sub report { shift->{smoke_report} }
sub results { shift->{test_results} }
sub generate_html {
my $self = shift;
# where are we saving the results
my $dir = catdir($self->report->data_dir, 'html');
unless (-d $dir) {
mkpath($dir) or croak "Could not create directory '$dir'! $!";
}
my $file = catfile($dir, 'report.html');
my $meta = $self->{meta} || {};
my $extra_props = $meta->{extra_properties} || {};
# process the full report
my $odd_even = Template::Plugin::Cycle->new(qw(odd even));
$TMPL->process(
'TAP/full_report.tmpl',
{
report => $self->report,
results => $self->results,
odd_even => $odd_even,
url_base => Smolder::Util::url_base(),
extra_properties => $extra_props,
},
$file,
) or croak $TMPL->error;
# now generate the HTML for each individual file
my $count = 0;
foreach my $test (@{$self->results}) {
my $save_file = catfile($dir, $count . '.html');
$TMPL->process(
'TAP/individual_test.tmpl',
{
report => $self->report,
test_file => $test->{label},
tests => $test->{tests},
odd_even => $odd_even,
url_base => Smolder::Util::url_base(),
is_muted => $test->{is_muted},
},
$save_file,
) or croak "Problem processing template file '$file': ", $TMPL->error;
$count++;
}
}
__END__
=pod
=head1 NAME
Smolder::TAPHTMLMatrix