selftest: Ensure the DC has started and and got a RID set before we proceed
[nivanova/samba-autobuild/.git] / selftest / format-subunit
index 472f51a815badbee4c66f964f225fb8b02d716ed..b927e95ae483fd231966b76d4457291781df288b 100755 (executable)
@@ -1,91 +1,52 @@
-#!/usr/bin/perl
+#!/usr/bin/env python
+# vim: expandtab
 # Pretty-format subunit output
-# Copyright (C) Jelmer Vernooij <jelmer@samba.org>
+# Copyright (C) 2008-2010 Jelmer Vernooij <jelmer@samba.org>
 # Published under the GNU GPL, v3 or later
 
-=pod
-
-=head1 NAME
-
-format-subunit [--format=<NAME>] [--immediate] < instream > outstream
-
-=head1 SYNOPSIS
-
-Format the output of a subunit stream.
-
-=head1 OPTIONS
-
-=over 4
-
-=item I<--immediate>
-
-Show errors as soon as they happen rather than at the end of the test run.
-
-=item I<--format>=FORMAT
-
-Choose the format to print. Currently supported are plain or html.
-
-=head1 LICENSE
-
-GNU General Public License, version 3 or later.
-
-=head1 AUTHOR
-
-Jelmer Vernooij <jelmer@samba.org>
-               
-=cut
-
-use Getopt::Long;
-use strict;
-use FindBin qw($RealBin $Script);
-use lib "$RealBin";
-use Subunit qw(parse_results);
-
-my $opt_format = "plain";
-my $opt_help = undef;
-my $opt_verbose = 0;
-my $opt_immediate = 0;
-my $opt_prefix = ".";
-
-my $result = GetOptions (
-               'help|h|?' => \$opt_help,
-               'format=s' => \$opt_format,
-               'verbose' => \$opt_verbose,
-               'immediate' => \$opt_immediate,
-               'prefix:s' => \$opt_prefix,
-           );
-
-exit(1) if (not $result);
-
-my $msg_ops;
-
-# we want unbuffered output
-$| = 1;
+import optparse
+import os
+import signal
+import sys
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../lib/subunit/python"))
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../lib/testtools"))
+
+import subunithelper
+
+parser = optparse.OptionParser("format-subunit [options]")
+parser.add_option("--verbose", action="store_true",
+    help="Be verbose")
+parser.add_option("--immediate", action="store_true", 
+    help="Show failures immediately, don't wait until test run has finished")
+parser.add_option("--prefix", type="string", default=".",
+    help="Prefix to write summary to")
+
+opts, args = parser.parse_args()
+
+def handle_sigint(sig, stack):
+       sys.exit(0)
+signal.signal(signal.SIGINT, handle_sigint)
+
+statistics = {
+    'SUITES_FAIL': 0,
+    'TESTS_UNEXPECTED_OK': 0,
+    'TESTS_EXPECTED_OK': 0,
+    'TESTS_UNEXPECTED_FAIL': 0,
+    'TESTS_EXPECTED_FAIL': 0,
+    'TESTS_ERROR': 0,
+    'TESTS_SKIP': 0,
+}
 
-my $statistics = {
-       SUITES_FAIL => 0,
+msg_ops = subunithelper.PlainFormatter(opts.verbose, opts.immediate, statistics)
 
-       TESTS_UNEXPECTED_OK => 0,
-       TESTS_EXPECTED_OK => 0,
-       TESTS_UNEXPECTED_FAIL => 0,
-       TESTS_EXPECTED_FAIL => 0,
-       TESTS_ERROR => 0,
-       TESTS_SKIP => 0,
-};
+expected_ret = subunithelper.parse_results(msg_ops, statistics, sys.stdin)
 
-if ($opt_format eq "plain") {
-       require output::plain;
-       $msg_ops = new output::plain("$opt_prefix/summary", $opt_verbose, $opt_immediate, $statistics, undef);
-} elsif ($opt_format eq "html") {
-       require output::html;
-       mkdir("test-results", 0777);
-       $msg_ops = new output::html("test-results", $statistics);
-} else {
-       die("Invalid output format '$opt_format'");
-}
+summaryfile = os.path.join(opts.prefix, "summary")
 
-my $expected_ret = parse_results($msg_ops, $statistics, *STDIN);
+msg_ops.write_summary(summaryfile)
 
-$msg_ops->summary();
+print "\nA summary with detailed information can be found in:"
+print "  %s" % summaryfile
 
-exit($expected_ret);
+sys.exit(expected_ret)