r24339: Move output functions to separate files.
[kai/samba.git] / source4 / selftest / subunit-summary
1 #!/usr/bin/perl
2 # Simple subunit parser
3 # (C) 2006 Jelmer Vernooij <jelmer@samba.org>
4
5 use strict;
6 use Getopt::Long;
7
8 my $numtests = 0;
9 my $numfails = 0;
10 my $numskips = 0;
11 my $numsuccess = 0;
12
13 my $opt_help = 0;
14 my $opt_progress = 0;
15
16 my $result = GetOptions (
17             'help|h|?' => \$opt_help, 
18                 'progress' => \$opt_progress
19             );
20
21 if (not $result) {
22         exit(1);
23 }
24
25 if ($opt_help) {
26         print "subunit output summarizer\n";
27         print "Copyright (C) 2006 Jelmer Vernooij <jelmer\@samba.org>\n";
28         print "\n";
29         print "Usage: subunit-summary [OPTION]\n";
30         print " --help                  Print this help message\n";
31         print "\n";
32         exit(0);
33 }
34
35 while(<STDIN>) {
36         next unless (/^(.+): (.+?)( \[)?$/);
37         if ($1 eq "test") {
38                 $numtests++;
39         } elsif ($1 eq "error") {
40                 print "E" if ($opt_progress);
41         } elsif ($1 eq "failure") {
42                 $numfails++;
43                 print "F" if ($opt_progress);
44         } elsif ($1 eq "success") {
45                 $numsuccess++;
46                 print "." if ($opt_progress);
47         } elsif ($1 eq "skip") {
48                 $numskips++;
49                 print "I" if ($opt_progress);
50         } elsif ($1 eq "testsuite") {
51                 if ($opt_progress) {
52                         if ($numtests) { print "\n"; }
53                         print "$2: ";
54                 }
55         }
56 }
57
58 print "\n" if ($opt_progress);
59
60 if ($numtests == 0) {
61     print "No tests run\n";
62     exit(0);
63 }
64
65 printf("%d%%: %d tests, %d succeeded, %d failed, %d skipped\n", 
66        ($numsuccess / $numtests * 100),
67            $numtests,
68            $numsuccess,
69            $numfails,
70            $numskips);