123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #! /usr/bin/env perl
- # Copyright (C) 2018 Red Hat, Inc.
- #
- # Author: Paolo Bonzini <pbonzini@redhat.com>
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <https://www.gnu.org/licenses/>.
- # ---------------------------------- #
- # Imports, static data, and setup. #
- # ---------------------------------- #
- use warnings FATAL => 'all';
- use strict;
- use Getopt::Long ();
- use TAP::Parser;
- my $ME = "tap-merge.pl";
- my $VERSION = "2018-11-30";
- my $HELP = "$ME: merge multiple TAP inputs from stdin.";
- use constant DIAG_STRING => "#";
- # ----------------- #
- # Option parsing. #
- # ----------------- #
- Getopt::Long::GetOptions
- (
- 'help' => sub { print $HELP; exit 0; },
- 'version' => sub { print "$ME $VERSION\n"; exit 0; },
- );
- # -------------- #
- # Subroutines. #
- # -------------- #
- sub main ()
- {
- my $iterator = TAP::Parser::Iterator::Stream->new(\*STDIN);
- my $parser = TAP::Parser->new ({iterator => $iterator });
- my $testno = 0; # Number of test results seen so far.
- my $bailed_out = 0; # Whether a "Bail out!" directive has been seen.
- STDOUT->autoflush(1);
- while (defined (my $cur = $parser->next))
- {
- if ($cur->is_bailout)
- {
- $bailed_out = 1;
- print DIAG_STRING . " " . $cur->as_string . "\n";
- next;
- }
- elsif ($cur->is_plan)
- {
- $bailed_out = 0;
- next;
- }
- elsif ($cur->is_test)
- {
- $bailed_out = 0 if $cur->number == 1;
- $testno++;
- $cur = TAP::Parser::Result::Test->new({
- ok => $cur->ok,
- test_num => $testno,
- directive => $cur->directive,
- explanation => $cur->explanation,
- description => $cur->description
- });
- }
- elsif ($cur->is_version)
- {
- next if $testno > 0;
- }
- print $cur->as_string . "\n" unless $bailed_out;
- }
- print "1..$testno\n";
- }
- # ----------- #
- # Main code. #
- # ----------- #
- main;
- # Local Variables:
- # perl-indent-level: 2
- # perl-continued-statement-offset: 2
- # perl-continued-brace-offset: 0
- # perl-brace-offset: 0
- # perl-brace-imaginary-offset: 0
- # perl-label-offset: -2
- # cperl-indent-level: 2
- # cperl-brace-offset: 0
- # cperl-continued-brace-offset: 0
- # cperl-label-offset: -2
- # cperl-extra-newline-before-brace: t
- # cperl-merge-trailing-else: nil
- # cperl-continued-statement-offset: 2
- # End:
|