X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=selftest%2Fselftest.pl;h=ea09c269e7e7ad1b77235ac7e25f36c885cbd14e;hb=a8b2088a0eb6cd5b8f9a7fba276ca31418a7989a;hp=1477d10d469bb590bb6ed4dfc552f2a54cdd9389;hpb=694a579cb8d418a4feb441a77c0dc000023f2c6e;p=abartlet%2Fsamba.git%2F.git diff --git a/selftest/selftest.pl b/selftest/selftest.pl index 1477d10d469..ea09c269e7e 100755 --- a/selftest/selftest.pl +++ b/selftest/selftest.pl @@ -1,7 +1,20 @@ #!/usr/bin/perl # Bootstrap Samba and run a number of tests against it. -# Copyright (C) 2005-2008 Jelmer Vernooij -# Published under the GNU GPL, v3 or later. +# Copyright (C) 2005-2009 Jelmer Vernooij +# Copyright (C) 2007-2009 Stefan Metzmacher + +# 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 . =pod @@ -13,7 +26,7 @@ selftest - Samba test runner selftest --help -selftest [--srcdir=DIR] [--builddir=DIR] [--target=samba4|samba3|win|kvm] [--socket-wrapper] [--quick] [--exclude=FILE] [--include=FILE] [--one] [--prefix=prefix] [--immediate] [--testlist=FILE] [TESTS] +selftest [--srcdir=DIR] [--builddir=DIR] [--exeext=EXT][--target=samba4|samba3|win|kvm] [--socket-wrapper] [--quick] [--exclude=FILE] [--include=FILE] [--one] [--prefix=prefix] [--testlist=FILE] [TESTS] =head1 DESCRIPTION @@ -35,14 +48,14 @@ Source directory. Build directory. +=item I<--exeext=EXT> + +Executable extention + =item I<--prefix=DIR> Change directory to run tests in. Default is 'st'. -=item I<--immediate> - -Show errors as soon as they happen rather than at the end of the test run. - =item I<--target samba4|samba3|win|kvm> Specify test target against which to run. Default is 'samba4'. @@ -60,23 +73,10 @@ when the server is running locally. Will prevent TCP and UDP ports being opened on the local host but (transparently) redirects these calls to use unix domain sockets. -=item I<--expected-failures> - -Specify a file containing a list of tests that are expected to fail. Failures for -these tests will be counted as successes, successes will be counted as failures. - -The format for the file is, one entry per line: - -TESTSUITE-NAME.TEST-NAME - -The reason for a test can also be specified, by adding a hash sign (#) and the reason -after the test name. - =item I<--exclude> Specify a file containing a list of tests that should be skipped. Possible -candidates are tests that segfault the server, flip or don't end. The format of this file is the same as -for the --expected-failures flag. +candidates are tests that segfault the server, flip or don't end. =item I<--include> @@ -130,6 +130,7 @@ use POSIX; use Cwd qw(abs_path); use lib "$RealBin"; use Subunit qw(parse_results); +use Subunit::Filter; use SocketWrapper; my $opt_help = 0; @@ -139,8 +140,6 @@ my $opt_socket_wrapper = 0; my $opt_socket_wrapper_pcap = undef; my $opt_socket_wrapper_keep_pcap = undef; my $opt_one = 0; -my $opt_immediate = 0; -my $opt_expected_failures = undef; my @opt_exclude = (); my @opt_include = (); my $opt_verbose = 0; @@ -151,28 +150,16 @@ my $opt_analyse_cmd = undef; my $opt_resetup_env = undef; my $opt_bindir = undef; my $opt_no_lazy_setup = undef; -my $opt_format = "plain"; my @testlists = (); my $srcdir = "."; my $builddir = "."; +my $exeext = ""; my $prefix = "./st"; -my @expected_failures = (); my @includes = (); my @excludes = (); -my $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, -}; - sub find_in_list($$) { my ($list, $fullname) = @_; @@ -180,19 +167,13 @@ sub find_in_list($$) foreach (@$list) { if ($fullname =~ /$$_[0]/) { return ($$_[1]) if ($$_[1]); - return "NO REASON SPECIFIED"; + return ""; } } return undef; } -sub expecting_failure($) -{ - my ($name) = @_; - return find_in_list(\@expected_failures, $name); -} - sub skip($) { my ($name) = @_; @@ -219,94 +200,124 @@ sub setup_pcap($) return $pcap_file; } -sub cleanup_pcap($$$) +sub cleanup_pcap($$) { - my ($pcap_file, $expected_ret, $ret) = @_; + my ($pcap_file, $exitcode) = @_; return unless ($opt_socket_wrapper_pcap); return if ($opt_socket_wrapper_keep_pcap); - return unless ($expected_ret == $ret); + return unless ($exitcode == 0); return unless defined($pcap_file); unlink($pcap_file); } -sub run_testsuite($$$$$$) +# expand strings from %ENV +sub expand_environment_strings($) { - my ($envname, $name, $cmd, $i, $totalsuites, $msg_ops) = @_; + my $s = shift; + # we use a reverse sort so we do the longer ones first + foreach my $k (sort { $b cmp $a } keys %ENV) { + $s =~ s/\$$k/$ENV{$k}/g; + } + return $s; +} + +sub run_testsuite($$$$$) +{ + my ($envname, $name, $cmd, $i, $totalsuites) = @_; my $pcap_file = setup_pcap($name); - $msg_ops->start_test([], $name); + Subunit::start_testsuite($name); + Subunit::report_time(time()); - unless (open(RESULT, "$cmd 2>&1|")) { - $statistics->{TESTS_ERROR}++; - $msg_ops->end_test([], $name, "error", 1, "Unable to run $cmd: $!"); - $statistics->{SUITES_FAIL}++; - return 0; - } + open(RESULTS, "$cmd 2>&1|"); + my $statistics = { + TESTS_UNEXPECTED_OK => 0, + TESTS_EXPECTED_OK => 0, + TESTS_UNEXPECTED_FAIL => 0, + TESTS_EXPECTED_FAIL => 0, + TESTS_ERROR => 0, + TESTS_SKIP => 0, + }; - my $expected_ret = parse_results( - $msg_ops, $statistics, *RESULT, \&expecting_failure, [$name]); + my $msg_ops = new Subunit::Filter("$name\.", []); - my $envlog = getlog_env($envname); - $msg_ops->output_msg("ENVLOG: $envlog\n") if ($envlog ne ""); + parse_results($msg_ops, $statistics, *RESULTS); - $msg_ops->output_msg("CMD: $cmd\n"); + my $ret = 0; - my $ret = close(RESULT); - $ret = 0 unless $ret == 1; + unless (close(RESULTS)) { + if ($!) { + Subunit::end_testsuite($name, "error", "Unable to run $cmd: $!"); + return 0; + } else { + $ret = $?; + } + } + + if ($ret & 127) { + Subunit::end_testsuite($name, "error", sprintf("Testsuite died with signal %d, %s coredump", ($ret & 127), ($ret & 128) ? "with": "without")); + return 0; + } + my $envlog = getlog_env($envname); + if ($envlog ne "") { + print "envlog: $envlog\n"; + } - my $exitcode = $? >> 8; + print "command: $cmd\n"; + printf "expanded command: %s\n", expand_environment_strings($cmd); - if ($ret == 1) { - $msg_ops->end_test([], $name, "success", $expected_ret != $ret, undef); + my $exitcode = $ret >> 8; + + Subunit::report_time(time()); + if ($exitcode == 0) { + Subunit::end_testsuite($name, "success"); } else { - $msg_ops->end_test([], $name, "failure", $expected_ret != $ret, "Exit code was $exitcode"); + Subunit::end_testsuite($name, "failure", "Exit code was $exitcode"); } - cleanup_pcap($pcap_file, $expected_ret, $ret); + cleanup_pcap($pcap_file, $exitcode); if (not $opt_socket_wrapper_keep_pcap and defined($pcap_file)) { - $msg_ops->output_msg("PCAP FILE: $pcap_file\n"); + print "PCAP FILE: $pcap_file\n"; } - if ($ret != $expected_ret) { - $statistics->{SUITES_FAIL}++; + if ($exitcode != 0) { exit(1) if ($opt_one); } - return ($ret == $expected_ret); + return $exitcode; } sub ShowHelp() { print "Samba test runner Copyright (C) Jelmer Vernooij +Copyright (C) Stefan Metzmacher -Usage: $Script [OPTIONS] PREFIX +Usage: $Script [OPTIONS] TESTNAME-REGEX Generic options: --help this help page --target=samba[34]|win|kvm Samba version to target - --testlist=FILE file to read available tests from + --testlist=FILE file to read available tests from Paths: --prefix=DIR prefix to run tests in [st] --srcdir=DIR source directory [.] --builddir=DIR output directory [.] + --exeext=EXT executable extention [] Target Specific: - --socket-wrapper-pcap save traffic to pcap directories + --socket-wrapper-pcap save traffic to pcap directories --socket-wrapper-keep-pcap keep all pcap files, not just those for tests that failed --socket-wrapper enable socket wrapper - --expected-failures=FILE specify list of tests that is guaranteed to fail + --bindir=PATH path to target binaries Samba4 Specific: - --ldap=openldap|fedora-ds back samba onto specified ldap server - -Samba3 Specific: - --bindir=PATH path to binaries + --ldap=openldap|fedora-ds back samba onto specified ldap server Kvm Specific: --image=PATH path to KVM image @@ -314,7 +325,6 @@ Kvm Specific: Behaviour: --quick run quick overall test --one abort when the first test fails - --immediate print test output for failed tests during run --verbose be verbose --analyse-cmd CMD command to run after each test "; @@ -330,12 +340,11 @@ my $result = GetOptions ( 'socket-wrapper-keep-pcap' => \$opt_socket_wrapper_keep_pcap, 'quick' => \$opt_quick, 'one' => \$opt_one, - 'immediate' => \$opt_immediate, - 'expected-failures=s' => \$opt_expected_failures, 'exclude=s' => \@opt_exclude, 'include=s' => \@opt_include, 'srcdir=s' => \$srcdir, 'builddir=s' => \$builddir, + 'exeext=s' => \$exeext, 'verbose' => \$opt_verbose, 'testenv' => \$opt_testenv, 'ldap:s' => \$ldap, @@ -343,7 +352,6 @@ my $result = GetOptions ( 'no-lazy-setup' => \$opt_no_lazy_setup, 'resetup-environment' => \$opt_resetup_env, 'bindir:s' => \$opt_bindir, - 'format=s' => \$opt_format, 'image=s' => \$opt_image, 'testlist=s' => \@testlists ); @@ -352,7 +360,10 @@ exit(1) if (not $result); ShowHelp() if ($opt_help); -my $tests = shift; +# we want unbuffered output +$| = 1; + +my @tests = @ARGV; # quick hack to disable rpc validation when using valgrind - its way too slow unless (defined($ENV{VALGRIND})) { @@ -360,7 +371,11 @@ unless (defined($ENV{VALGRIND})) { $ENV{MALLOC_CHECK_} = 2; } -my $old_pwd = "$RealBin/.."; +# make all our python scripts unbuffered +$ENV{PYTHONUNBUFFERED} = 1; + +my $bindir = ($opt_bindir or "$builddir/bin"); +my $bindir_abs = abs_path($bindir); # Backwards compatibility: if (defined($ENV{TEST_LDAP}) and $ENV{TEST_LDAP} eq "yes") { @@ -388,6 +403,7 @@ mkdir($prefix, 0777) unless -d $prefix; my $prefix_abs = abs_path($prefix); my $srcdir_abs = abs_path($srcdir); +my $builddir_abs = abs_path($builddir); die("using an empty absolute prefix isn't allowed") unless $prefix_abs ne ""; die("using '/' as absolute prefix isn't allowed") unless $prefix_abs ne "/"; @@ -397,16 +413,14 @@ $ENV{KRB5CCNAME} = "$prefix/krb5ticket"; $ENV{PREFIX_ABS} = $prefix_abs; $ENV{SRCDIR} = $srcdir; $ENV{SRCDIR_ABS} = $srcdir_abs; - -if (defined($ENV{RUN_FROM_BUILD_FARM}) and - ($ENV{RUN_FROM_BUILD_FARM} eq "yes")) { - $opt_format = "buildfarm"; -} +$ENV{BUILDDIR} = $builddir; +$ENV{BUILDDIR_ABS} = $builddir_abs; +$ENV{EXEEXT} = $exeext; my $tls_enabled = not $opt_quick; $ENV{TLS_ENABLED} = ($tls_enabled?"yes":"no"); -$ENV{LDB_MODULES_PATH} = "$old_pwd/source4/bin/modules/ldb"; -$ENV{LD_SAMBA_MODULE_PATH} = "$old_pwd/source4/bin/modules"; +$ENV{LDB_MODULES_PATH} = "$bindir_abs/modules/ldb"; +$ENV{LD_SAMBA_MODULE_PATH} = "$bindir_abs/modules"; sub prefix_pathvar($$) { my ($name, $newpath) = @_; @@ -416,8 +430,8 @@ sub prefix_pathvar($$) $ENV{$name} = $newpath; } } -prefix_pathvar("PKG_CONFIG_PATH", "$old_pwd/source4/bin/pkgconfig"); -prefix_pathvar("PYTHONPATH", "$old_pwd/source4/bin/python"); +prefix_pathvar("PKG_CONFIG_PATH", "$bindir_abs/pkgconfig"); +prefix_pathvar("PYTHONPATH", "$bindir_abs/python"); if ($opt_socket_wrapper_keep_pcap) { # Socket wrapper keep pcap implies socket wrapper pcap @@ -431,26 +445,28 @@ if ($opt_socket_wrapper_pcap) { my $socket_wrapper_dir; if ($opt_socket_wrapper) { - $socket_wrapper_dir = SocketWrapper::setup_dir("$prefix/w", $opt_socket_wrapper_pcap); + $socket_wrapper_dir = SocketWrapper::setup_dir("$prefix_abs/w", $opt_socket_wrapper_pcap); print "SOCKET_WRAPPER_DIR=$socket_wrapper_dir\n"; } else { - warn("Not using socket wrapper, but also not running as root. Will not be able to listen on proper ports") unless $< == 0; + unless ($< == 0) { + print "WARNING: Not using socket wrapper, but also not running as root. Will not be able to listen on proper ports\n"; + } } my $target; my $testenv_default = "none"; if ($opt_target eq "samba4") { - $testenv_default = "member"; + $testenv_default = "all"; require target::Samba4; - $target = new Samba4($opt_bindir or "$srcdir/bin", $ldap, "$srcdir/setup"); + $target = new Samba4($bindir, $ldap, "$srcdir/setup", $exeext); } elsif ($opt_target eq "samba3") { - if ($opt_socket_wrapper and `$opt_bindir/smbd -b | grep SOCKET_WRAPPER` eq "") { + if ($opt_socket_wrapper and `$bindir/smbd -b | grep SOCKET_WRAPPER` eq "") { die("You must include --enable-socket-wrapper when compiling Samba in order to execute 'make test'. Exiting...."); } - $testenv_default = "dc"; + $testenv_default = "member"; require target::Samba3; - $target = new Samba3($opt_bindir); + $target = new Samba3($bindir); } elsif ($opt_target eq "win") { die("Windows tests will not run with socket wrapper enabled.") if ($opt_socket_wrapper); @@ -509,18 +525,10 @@ sub read_test_regexes($) return @ret; } -if (defined($opt_expected_failures)) { - @expected_failures = read_test_regexes($opt_expected_failures); -} - foreach (@opt_exclude) { push (@excludes, read_test_regexes($_)); } -if ($opt_quick) { - push (@includes, read_test_regexes("samba4-quick")); -} - foreach (@opt_include) { push (@includes, read_test_regexes($_)); } @@ -533,6 +541,7 @@ my $interfaces = join(',', ("127.0.0.6/8", "127.0.0.11/8")); my $conffile = "$prefix_abs/client/client.conf"; +$ENV{SMB_CONF_PATH} = $conffile; sub write_clientconf($$) { @@ -546,6 +555,18 @@ sub write_clientconf($$) mkdir("$prefix/client/private", 0777); } + if ( -d "$prefix/client/lockdir" ) { + unlink <$prefix/client/lockdir/*>; + } else { + mkdir("$prefix/client/lockdir", 0777); + } + + if ( -d "$prefix_abs/client/ncalrpcdir" ) { + unlink <$prefix/client/ncalrpcdir/*>; + } else { + mkdir("$prefix/client/ncalrpcdir", 0777); + } + open(CF, ">$conffile"); print CF "[global]\n"; if (defined($ENV{VALGRIND})) { @@ -560,55 +581,49 @@ sub write_clientconf($$) if (defined($vars->{REALM})) { print CF "\trealm = $vars->{REALM}\n"; } - if (defined($vars->{NCALRPCDIR})) { - print CF "\tncalrpc dir = $vars->{NCALRPCDIR}\n"; - } - if (defined($vars->{PIDDIR})) { - print CF "\tpid directory = $vars->{PIDDIR}\n"; - } - if (defined($vars->{WINBINDD_SOCKET_DIR})) { - print CF "\twinbindd socket directory = $vars->{WINBINDD_SOCKET_DIR}\n"; - } if ($opt_socket_wrapper) { print CF "\tinterfaces = $interfaces\n"; } print CF " private dir = $prefix_abs/client/private + lock dir = $prefix_abs/client/lockdir + ncalrpc dir = $prefix_abs/client/ncalrpcdir name resolve order = bcast - panic action = $srcdir_abs/script/gdb_backtrace \%PID\% \%PROG\% + panic action = $RealBin/gdb_backtrace \%PID\% \%PROG\% max xmit = 32K notify:inotify = false ldb:nosync = true system:anonymous = true + client lanman auth = Yes torture:basedir = $prefix_abs/client #We don't want to pass our self-tests if the PAC code is wrong gensec:require_pac = true modules dir = $ENV{LD_SAMBA_MODULE_PATH} + setup directory = ./setup "; close(CF); } -my @torture_options = (); -push (@torture_options, "--configfile=$conffile"); -# ensure any one smbtorture call doesn't run too long -push (@torture_options, "--maximum-runtime=$torture_maxtime"); -push (@torture_options, "--target=$opt_target"); -push (@torture_options, "--basedir=$prefix_abs"); -push (@torture_options, "--option=torture:progress=no") unless ($opt_verbose); -push (@torture_options, "--format=subunit"); -push (@torture_options, "--option=torture:quick=yes") if ($opt_quick); - -$ENV{TORTURE_OPTIONS} = join(' ', @torture_options); -print "OPTIONS $ENV{TORTURE_OPTIONS}\n"; - my @todo = (); my $testsdir = "$srcdir/selftest"; -$ENV{SMB_CONF_PATH} = "$conffile"; -$ENV{CONFIGURATION} = "--configfile=$conffile"; my %required_envs = (); +sub should_run_test($) +{ + my $name = shift; + if ($#tests == -1) { + return 1; + } + for (my $i=0; $i <= $#tests; $i++) { + if ($name =~ /$tests[$i]/i) { + return 1; + } + } + return 0; +} + sub read_testlist($) { my ($filename) = @_; @@ -624,7 +639,7 @@ sub read_testlist($) $env =~ s/\n//g; my $cmdline = ; $cmdline =~ s/\n//g; - if (not defined($tests) or $name =~ /$tests/) { + if (should_run_test($name) == 1) { $required_envs{$env} = 1; push (@ret, [$name, $env, $cmdline]); } @@ -640,36 +655,42 @@ if ($#testlists == -1) { die("No testlists specified"); } +$ENV{SELFTEST_PREFIX} = "$prefix_abs"; +if ($opt_socket_wrapper) { + $ENV{SELFTEST_INTERFACES} = $interfaces; +} else { + $ENV{SELFTEST_INTERFACES} = ""; +} +if ($opt_verbose) { + $ENV{SELFTEST_VERBOSE} = "1"; +} else { + $ENV{SELFTEST_VERBOSE} = ""; +} +if ($opt_quick) { + $ENV{SELFTEST_QUICK} = "1"; +} else { + $ENV{SELFTEST_QUICK} = ""; +} +$ENV{SELFTEST_TARGET} = $opt_target; +$ENV{SELFTEST_MAXTIME} = $torture_maxtime; + my @available = (); foreach my $fn (@testlists) { foreach (read_testlist($fn)) { my $name = $$_[0]; - next if (@includes and not find_in_list(\@includes, $name)); + next if (@includes and not defined(find_in_list(\@includes, $name))); push (@available, $_); } } -my $msg_ops; -if ($opt_format eq "buildfarm") { - require output::buildfarm; - $msg_ops = new output::buildfarm($statistics); -} elsif ($opt_format eq "plain") { - require output::plain; - $msg_ops = new output::plain("$prefix/summary", $opt_verbose, $opt_immediate, $statistics, $#available+1); -} 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'"); -} - +Subunit::testsuite_count($#available+1); +Subunit::report_time(time()); foreach (@available) { my $name = $$_[0]; my $skipreason = skip($name); - if ($skipreason) { - $msg_ops->skip_testsuite($name, $skipreason); + if (defined($skipreason)) { + Subunit::skip_testsuite($name, $skipreason); } else { push(@todo, $_); } @@ -686,6 +707,17 @@ $| = 1; my %running_envs = (); +sub get_running_env($) +{ + my ($name) = @_; + + my $envname = $name; + + $envname =~ s/:.*//; + + return $running_envs{$envname}; +} + my @exported_envvars = ( # domain stuff "DOMAIN", @@ -697,6 +729,18 @@ my @exported_envvars = ( "DC_NETBIOSNAME", "DC_NETBIOSALIAS", + # domain controller stuff + "MEMBER_SERVER", + "MEMBER_SERVER_IP", + "MEMBER_NETBIOSNAME", + "MEMBER_NETBIOSALIAS", + + # domain controller stuff + "RPC_PROXY_SERVER", + "RPC_PROXY_SERVER_IP", + "RPC_PROXY_NETBIOSNAME", + "RPC_PROXY_NETBIOSALIAS", + # server stuff "SERVER", "SERVER_IP", @@ -723,13 +767,23 @@ $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { sub setup_env($) { - my ($envname) = @_; + my ($name) = @_; + + my $testenv_vars = undef; + + my $envname = $name; + my $option = $name; + + $envname =~ s/:.*//; + $option =~ s/^[^:]*//; + $option =~ s/^://; + + $option = "client" if $option eq ""; - my $testenv_vars; if ($envname eq "none") { $testenv_vars = {}; - } elsif (defined($running_envs{$envname})) { - $testenv_vars = $running_envs{$envname}; + } elsif (defined(get_running_env($envname))) { + $testenv_vars = get_running_env($envname); if (not $target->check_env($testenv_vars)) { $testenv_vars = undef; } @@ -741,8 +795,16 @@ sub setup_env($) $running_envs{$envname} = $testenv_vars; - SocketWrapper::set_default_iface(6); - write_clientconf($conffile, $testenv_vars); + if ($option eq "local") { + SocketWrapper::set_default_iface($testenv_vars->{SOCKET_WRAPPER_DEFAULT_IFACE}); + $ENV{SMB_CONF_PATH} = $testenv_vars->{SERVERCONFFILE}; + } elsif ($option eq "client") { + SocketWrapper::set_default_iface(6); + write_clientconf($conffile, $testenv_vars); + $ENV{SMB_CONF_PATH} = $conffile; + } else { + die("Unknown option[$option] for envname[$envname]"); + } foreach (@exported_envvars) { if (defined($testenv_vars->{$_})) { @@ -772,21 +834,21 @@ sub getlog_env($) { my ($envname) = @_; return "" if ($envname eq "none"); - return $target->getlog_env($running_envs{$envname}); + return $target->getlog_env(get_running_env($envname)); } sub check_env($) { my ($envname) = @_; return 1 if ($envname eq "none"); - return $target->check_env($running_envs{$envname}); + return $target->check_env(get_running_env($envname)); } sub teardown_env($) { my ($envname) = @_; return if ($envname eq "none"); - $target->teardown_env($running_envs{$envname}); + $target->teardown_env(get_running_env($envname)); delete $running_envs{$envname}; } @@ -804,7 +866,7 @@ if ($opt_testenv) { my $envvarstr = exported_envvars_str($testenv_vars); - my $term = ($ENV{TERM} or "xterm"); + my $term = ($ENV{TERMINAL} or "xterm"); system("$term -e 'echo -e \" Welcome to the Samba4 Test environment '$testenv_name' @@ -813,7 +875,7 @@ server is pid `cat \$PIDDIR/samba.pid` Some useful environment variables: TORTURE_OPTIONS=\$TORTURE_OPTIONS -CONFIGURATION=\$CONFIGURATION +SMB_CONF_PATH=\$SMB_CONF_PATH $envvarstr \" && LD_LIBRARY_PATH=$ENV{LD_LIBRARY_PATH} bash'"); @@ -828,12 +890,12 @@ $envvarstr my $envvars = setup_env($envname); if (not defined($envvars)) { - $msg_ops->skip_testsuite($name, "unable to set up environment $envname"); + Subunit::skip_testsuite($name, + "unable to set up environment $envname"); next; } - run_testsuite($envname, $name, $cmd, $i, $suitestotal, - $msg_ops); + run_testsuite($envname, $name, $cmd, $i, $suitestotal); if (defined($opt_analyse_cmd)) { system("$opt_analyse_cmd \"$name\""); @@ -849,23 +911,13 @@ teardown_env($_) foreach (keys %running_envs); $target->stop(); -$msg_ops->summary(); - my $failed = 0; # if there were any valgrind failures, show them foreach (<$prefix/valgrind.log*>) { next unless (-s $_); - system("grep DWARF2.CFI.reader $_ > /dev/null"); - if ($? >> 8 == 0) { - print "VALGRIND FAILURE\n"; - $failed++; - system("cat $_"); - } + print "VALGRIND FAILURE\n"; + $failed++; + system("cat $_"); } - -if ($opt_format eq "buildfarm") { - print "TEST STATUS: $statistics->{SUITES_FAIL}\n"; -} - -exit $statistics->{SUITES_FAIL}; +exit 0;