| 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 |
|
|---|
| 10 | format-subunit [--format=<NAME>] [--immediate] < instream > outstream
|
|---|
| 11 |
|
|---|
| 12 | =head1 SYNOPSIS
|
|---|
| 13 |
|
|---|
| 14 | Format the output of a subunit stream.
|
|---|
| 15 |
|
|---|
| 16 | =head1 OPTIONS
|
|---|
| 17 |
|
|---|
| 18 | =over 4
|
|---|
| 19 |
|
|---|
| 20 | =item I<--immediate>
|
|---|
| 21 |
|
|---|
| 22 | Show errors as soon as they happen rather than at the end of the test run.
|
|---|
| 23 |
|
|---|
| 24 | =item I<--format>=FORMAT
|
|---|
| 25 |
|
|---|
| 26 | Choose the format to print. Currently supported are plain or html.
|
|---|
| 27 |
|
|---|
| 28 | =head1 LICENSE
|
|---|
| 29 |
|
|---|
| 30 | GNU General Public License, version 3 or later.
|
|---|
| 31 |
|
|---|
| 32 | =head1 AUTHOR
|
|---|
| 33 |
|
|---|
| 34 | Jelmer Vernooij <jelmer@samba.org>
|
|---|
| 35 |
|
|---|
| 36 | =cut
|
|---|
| 37 |
|
|---|
| 38 | use Getopt::Long;
|
|---|
| 39 | use strict;
|
|---|
| 40 | use FindBin qw($RealBin $Script);
|
|---|
| 41 | use lib "$RealBin";
|
|---|
| 42 | use Subunit qw(parse_results);
|
|---|
| 43 |
|
|---|
| 44 | my $opt_format = "plain";
|
|---|
| 45 | my $opt_help = undef;
|
|---|
| 46 | my $opt_verbose = 0;
|
|---|
| 47 | my $opt_immediate = 0;
|
|---|
| 48 | my $opt_prefix = ".";
|
|---|
| 49 |
|
|---|
| 50 | my $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 |
|
|---|
| 58 | exit(1) if (not $result);
|
|---|
| 59 |
|
|---|
| 60 | my $msg_ops;
|
|---|
| 61 |
|
|---|
| 62 | my $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 |
|
|---|
| 73 | if ($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 |
|
|---|
| 84 | my $expected_ret = parse_results($msg_ops, $statistics, *STDIN);
|
|---|
| 85 |
|
|---|
| 86 | $msg_ops->summary();
|
|---|
| 87 |
|
|---|
| 88 | exit($expected_ret);
|
|---|