1#!/usr/bin/perl 2# Pretty-format subunit output 3# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 4# Published under the GNU GPL, v3 or later 5 6=pod 7 8=head1 NAME 9 10format-subunit [--format=<NAME>] [--immediate] < instream > outstream 11 12=head1 SYNOPSIS 13 14Format the output of a subunit stream. 15 16=head1 OPTIONS 17 18=over 4 19 20=item I<--immediate> 21 22Show errors as soon as they happen rather than at the end of the test run. 23 24=item I<--format>=FORMAT 25 26Choose the format to print. Currently supported are plain or html. 27 28=head1 LICENSE 29 30GNU General Public License, version 3 or later. 31 32=head1 AUTHOR 33 34Jelmer Vernooij <jelmer@samba.org> 35 36=cut 37 38use Getopt::Long; 39use strict; 40use FindBin qw($RealBin $Script); 41use lib "$RealBin"; 42use Subunit qw(parse_results); 43 44my $opt_format = "plain"; 45my $opt_help = undef; 46my $opt_verbose = 0; 47my $opt_immediate = 0; 48my $opt_prefix = "."; 49 50my $result = GetOptions ( 51 'help|h|?' => \$opt_help, 52 'format=s' => \$opt_format, 53 'verbose' => \$opt_verbose, 54 'immediate' => \$opt_immediate, 55 'prefix:s' => \$opt_prefix, 56 ); 57 58exit(1) if (not $result); 59 60my $msg_ops; 61 62my $statistics = { 63 SUITES_FAIL => 0, 64 65 TESTS_UNEXPECTED_OK => 0, 66 TESTS_EXPECTED_OK => 0, 67 TESTS_UNEXPECTED_FAIL => 0, 68 TESTS_EXPECTED_FAIL => 0, 69 TESTS_ERROR => 0, 70 TESTS_SKIP => 0, 71}; 72 73if ($opt_format eq "plain") { 74 require output::plain; 75 $msg_ops = new output::plain("$opt_prefix/summary", $opt_verbose, $opt_immediate, $statistics, undef); 76} elsif ($opt_format eq "html") { 77 require output::html; 78 mkdir("test-results", 0777); 79 $msg_ops = new output::html("test-results", $statistics); 80} else { 81 die("Invalid output format '$opt_format'"); 82} 83 84my $expected_ret = parse_results($msg_ops, $statistics, *STDIN); 85 86$msg_ops->summary(); 87 88exit($expected_ret); 89