Author: jelmer Date: 2007-08-27 15:15:38 +0000 (Mon, 27 Aug 2007) New Revision: 24708
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24708 Log: Move subunit code to a separate module. Added: branches/SAMBA_4_0/source/selftest/Subunit.pm Modified: branches/SAMBA_4_0/ branches/SAMBA_4_0/source/selftest/selftest.pl Changeset: Property changes on: branches/SAMBA_4_0 ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:file-ids ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Added: branches/SAMBA_4_0/source/selftest/Subunit.pm =================================================================== --- branches/SAMBA_4_0/source/selftest/Subunit.pm 2007-08-27 14:38:13 UTC (rev 24707) +++ branches/SAMBA_4_0/source/selftest/Subunit.pm 2007-08-27 15:15:38 UTC (rev 24708) @@ -0,0 +1,74 @@ +package Subunit; + +require Exporter; [EMAIL PROTECTED] = qw(Exporter); [EMAIL PROTECTED] = qw(parse_results); + +use strict; + +sub parse_results($$$$$) +{ + my ($msg_ops, $msg_state, $statistics, $fh, $expecting_failure) = @_; + my $expected_ret = 1; + my $open_tests = {}; + + while(<$fh>) { + if (/^test: (.+)\n/) { + $msg_ops->control_msg($msg_state, $_); + $open_tests->{$1} = 1; + $msg_ops->start_test($msg_state, $1); + } elsif (/^(success|failure|skip|error): (.*?)( \[)?([ \t]*)\n/) { + $msg_ops->control_msg($msg_state, $_); + my $reason = undef; + if ($3) { + $reason = ""; + # reason may be specified in next lines + while(<$fh>) { + $msg_ops->control_msg($msg_state, $_); + if ($_ eq "]\n") { last; } else { $reason .= $_; } + } + } + my $result = $1; + if ($1 eq "success") { + delete $open_tests->{$2}; + if ($expecting_failure->("$msg_state->{NAME}/$2")) { + $statistics->{TESTS_UNEXPECTED_OK}++; + $msg_ops->end_test($msg_state, $2, $1, 1, $reason); + } else { + $statistics->{TESTS_EXPECTED_OK}++; + $msg_ops->end_test($msg_state, $2, $1, 0, $reason); + } + } elsif ($1 eq "failure") { + delete $open_tests->{$2}; + if ($expecting_failure->("$msg_state->{NAME}/$2")) { + $statistics->{TESTS_EXPECTED_FAIL}++; + $msg_ops->end_test($msg_state, $2, $1, 0, $reason); + $expected_ret = 0; + } else { + $statistics->{TESTS_UNEXPECTED_FAIL}++; + $msg_ops->end_test($msg_state, $2, $1, 1, $reason); + } + } elsif ($1 eq "skip") { + $statistics->{TESTS_SKIP}++; + delete $open_tests->{$2}; + $msg_ops->end_test($msg_state, $2, $1, 0, $reason); + } elsif ($1 eq "error") { + $statistics->{TESTS_ERROR}++; + delete $open_tests->{$2}; + $msg_ops->end_test($msg_state, $2, $1, 1, $reason); + } + } else { + $msg_ops->output_msg($msg_state, $_); + } + } + + foreach (keys %$open_tests) { + $msg_ops->end_test($msg_state, $_, "error", 1, + "was started but never finished!"); + $statistics->{TESTS_ERROR}++; + } + + return $expected_ret; +} + +1; Modified: branches/SAMBA_4_0/source/selftest/selftest.pl =================================================================== --- branches/SAMBA_4_0/source/selftest/selftest.pl 2007-08-27 14:38:13 UTC (rev 24707) +++ branches/SAMBA_4_0/source/selftest/selftest.pl 2007-08-27 15:15:38 UTC (rev 24708) @@ -114,6 +114,7 @@ use POSIX; use Cwd qw(abs_path); use lib "$RealBin"; +use Subunit qw(parse_results); use env::Samba3; use env::Samba4; use env::Windows; @@ -212,71 +213,6 @@ $state->{PCAP_FILE} = undef; } -sub parse_subunit_results($$$$) -{ - my ($msg_ops, $msg_state, $statistics, $fh) = @_; - my $expected_ret = 1; - my $open_tests = {}; - - while(<$fh>) { - if (/^test: (.+)\n/) { - $msg_ops->control_msg($msg_state, $_); - $open_tests->{$1} = 1; - $msg_ops->start_test($msg_state, $1); - } elsif (/^(success|failure|skip|error): (.*?)( \[)?([ \t]*)\n/) { - $msg_ops->control_msg($msg_state, $_); - my $reason = undef; - if ($3) { - $reason = ""; - # reason may be specified in next lines - while(<$fh>) { - $msg_ops->control_msg($msg_state, $_); - if ($_ eq "]\n") { last; } else { $reason .= $_; } - } - } - my $result = $1; - if ($1 eq "success") { - delete $open_tests->{$2}; - if (expecting_failure("$msg_state->{NAME}/$2")) { - $statistics->{TESTS_UNEXPECTED_OK}++; - $msg_ops->end_test($msg_state, $2, $1, 1, $reason); - } else { - $statistics->{TESTS_EXPECTED_OK}++; - $msg_ops->end_test($msg_state, $2, $1, 0, $reason); - } - } elsif ($1 eq "failure") { - delete $open_tests->{$2}; - if (expecting_failure("$msg_state->{NAME}/$2")) { - $statistics->{TESTS_EXPECTED_FAIL}++; - $msg_ops->end_test($msg_state, $2, $1, 0, $reason); - $expected_ret = 0; - } else { - $statistics->{TESTS_UNEXPECTED_FAIL}++; - $msg_ops->end_test($msg_state, $2, $1, 1, $reason); - } - } elsif ($1 eq "skip") { - $statistics->{TESTS_SKIP}++; - delete $open_tests->{$2}; - $msg_ops->end_test($msg_state, $2, $1, 0, $reason); - } elsif ($1 eq "error") { - $statistics->{TESTS_ERROR}++; - delete $open_tests->{$2}; - $msg_ops->end_test($msg_state, $2, $1, 1, $reason); - } - } else { - $msg_ops->output_msg($msg_state, $_); - } - } - - foreach (keys %$open_tests) { - $msg_ops->end_test($msg_state, $_, "error", 1, - "was started but never finished!"); - $statistics->{TESTS_ERROR}++; - } - - return $expected_ret; -} - sub run_testsuite($$$$$$) { my ($envname, $name, $cmd, $i, $totalsuites, $msg_ops) = @_; @@ -294,8 +230,8 @@ open(RESULT, "$cmd 2>&1|"); $msg_ops->start_testsuite($msg_state); - my $expected_ret = parse_subunit_results( - $msg_ops, $msg_state, $statistics, *RESULT); + my $expected_ret = parse_results( + $msg_ops, $msg_state, $statistics, *RESULT, \&expecting_failure); my $ret = close(RESULT);