From 53aeb7f4cf4935fbf48d745e6f38a9793120c1a9 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 13 May 2009 19:42:41 +0200 Subject: selftest: Add subunit output format. --- selftest/output/subunit.pm | 102 +++++++++++++++++++++++++++++++++++++++++++++ selftest/selftest.pl | 3 ++ 2 files changed, 105 insertions(+) create mode 100644 selftest/output/subunit.pm (limited to 'selftest') diff --git a/selftest/output/subunit.pm b/selftest/output/subunit.pm new file mode 100644 index 0000000000..720fe7285c --- /dev/null +++ b/selftest/output/subunit.pm @@ -0,0 +1,102 @@ +#!/usr/bin/perl +# Subunit output for selftest +# Copyright (C) 2009 Jelmer Vernooij +# +# 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 3 of the License, 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 . + +package output::subunit; + +use Exporter; +@ISA = qw(Exporter); + +use FindBin qw($RealBin); +use lib "$RealBin/.."; + +use Subunit qw(parse_results); + +use strict; + +sub new($) { + my ($class) = @_; + my $self = { }; + bless($self, $class); +} + +sub start_testsuite($$) +{ + my ($self, $name) = @_; + + $self->{NAME} = $name; + + print "test: $self->{NAME}\n"; +} + +sub output_msg($$) +{ + my ($self, $output) = @_; + + print $output; +} + +sub control_msg($$) +{ + my ($self, $output) = @_; +} + +sub end_testsuite($$$$$$) +{ + my ($self, $name, $result, $unexpected, $reason) = @_; + + if ($result eq "failure" and not $unexpected) { $result = "xfail"; } + + if ($reason) { + print "$result: $name [ $reason ]\n"; + } else { + print "$result: $name\n"; + } +} + +sub start_test($$$) +{ + my ($self, $parents, $testname) = @_; + + print "test: $testname\n"; +} + +sub end_test($$$$$) +{ + my ($self, $parents, $testname, $result, $unexpected, $reason) = @_; + + if ($result eq "fail" and not $unexpected) { $result = "xfail"; } + + if ($reason) { + print "$result: $testname [ $reason ]\n"; + } else { + print "$result: $testname\n"; + } +} + +sub summary($) +{ + my ($self) = @_; +} + +sub skip_testsuite($$$$) +{ + my ($self, $name, $reason) = @_; + + print "skip: $name\n"; +} + +1; diff --git a/selftest/selftest.pl b/selftest/selftest.pl index 3653523541..7e64208ff3 100755 --- a/selftest/selftest.pl +++ b/selftest/selftest.pl @@ -686,6 +686,9 @@ if ($opt_format eq "buildfarm") { require output::html; mkdir("test-results", 0777); $msg_ops = new output::html("test-results", $statistics); +} elsif ($opt_format eq "subunit") { + require output::subunit; + $msg_ops = new output::subunit(); } else { die("Invalid output format '$opt_format'"); } -- cgit