source: status/report.pl @ 1150

Last change on this file since 1150 was 1150, checked in by Earle Martin, 14 years ago

Tabular output.

File size: 1.3 KB
Line 
1#!/usr/bin/perl
2
3use warnings;
4use strict;
5
6use Data::Dumper;
7use Template;
8
9my (%results, %test_names);
10
11foreach (glob "reports/*") {
12        my ($report_name) = $_ =~ m{reports/test-results-(.*)\.txt};
13       
14        $results{$report_name} = load_report($_);
15}
16
17my %report_data = (
18        'results'    => \%results,
19        'test_names' => [ sort keys %test_names ],
20);
21
22my $tt = Template->new({
23        INCLUDE_PATH => 'templates',
24});
25
26$tt->process('tests.tt', { 'data' => \%report_data }) or die $tt->error;
27
28# ----------------------------------------------------------------------------
29
30sub load_report {
31        my $file = shift;
32
33        die 'No input file specified'  unless $file;
34        die "That file doesn't exist"  unless -e $file;
35        die "That isn't a plain file"  unless -f _;
36        die "That file isn't readable" unless -r _;
37
38        open (my $RESULTS, '<', $file) or die "Can't open $file: $!";
39        my @lines = <$RESULTS>;
40        close $RESULTS;
41
42        my (%tests, $current_test);
43
44        # XXX: Test files get added, removed, renamed, etc. A mechanism is necessary
45        # here to cope with this.
46       
47        foreach (@lines) {
48                        chomp;
49
50                        if (m{^t/(.*?)\.}) {
51                                $current_test = $1;
52                                $test_names{$current_test} = 1;
53                        } elsif (/^ok$/) {
54                                $tests{$current_test} = 100;
55                        } elsif (/Failed .*? tests, (.*?)% okay/) {
56                                $tests{$current_test} = $1;
57                        }
58        }
59       
60        \%tests;
61}
Note: See TracBrowser for help on using the repository browser.