selftest: Fix generation of test id file.
[samba.git] / selftest / selftest.pl
index 1483174d7a97ebb2c836332da54a2134ff3e69c5..14ed26f551179b2c7ce86d0d6caf38eb27c5bb79 100755 (executable)
@@ -130,8 +130,7 @@ use Getopt::Long;
 use POSIX;
 use Cwd qw(abs_path);
 use lib "$RealBin";
-use Subunit qw(parse_results);
-use Subunit::Filter;
+use Subunit;
 use SocketWrapper;
 
 eval {
@@ -157,7 +156,6 @@ my $ldap = undef;
 my $opt_analyse_cmd = undef;
 my $opt_resetup_env = undef;
 my $opt_bindir = undef;
-my $opt_no_lazy_setup = undef;
 my $opt_load_list = undef;
 my @testlists = ();
 
@@ -243,9 +241,7 @@ sub run_testsuite($$$$$)
 
        open(RESULTS, "$cmd 2>&1|");
 
-       my $msg_ops = new Subunit::Filter("$name\.");
-
-       parse_results($msg_ops, *RESULTS);
+       Subunit::filter_add_prefix("$name\.", *RESULTS);
 
        my $ret = 0;
 
@@ -354,7 +350,6 @@ my $result = GetOptions (
                'testenv' => \$opt_testenv,
                'ldap:s' => \$ldap,
                'analyse-cmd=s' => \$opt_analyse_cmd,
-               'no-lazy-setup' => \$opt_no_lazy_setup,
                'resetup-environment' => \$opt_resetup_env,
                'bindir:s' => \$opt_bindir,
                'image=s' => \$opt_image,
@@ -616,8 +611,6 @@ my @todo = ();
 
 my $testsdir = "$srcdir/selftest";
 
-my %required_envs = ();
-
 sub should_run_test($)
 {
        my $name = shift;
@@ -649,7 +642,6 @@ sub read_testlist($)
                        my $cmdline = <IN>;
                        $cmdline =~ s/\n//g;
                        if (should_run_test($name) == 1) {
-                               $required_envs{$env} = 1;
                                push (@ret, [$name, $env, $cmdline, $supports_loadlist]);
                        }
                } else {
@@ -724,8 +716,8 @@ foreach my $testsuite (@available) {
                                $individual_tests->{$name} = [];
                                $match = $r;
                                $restricted_used->{$r} = 1;
-                       } elsif (substr($r, $name, length($name)+1) eq "$name.") {
-                               push(@{$individual_tests->{$name}}, $1);
+                       } elsif (substr($r, 0, length($name)+1) eq "$name.") {
+                               push(@{$individual_tests->{$name}}, substr($r, length($name)+1));
                                $match = $r;
                                $restricted_used->{$r} = 1;
                        }
@@ -910,16 +902,14 @@ sub teardown_env($)
 # This 'global' file needs to be empty when we start
 unlink("$prefix_abs/dns_host_file");
 
-if ($opt_no_lazy_setup) {
-       setup_env($_) foreach (keys %required_envs);
-}
-
 if ($opt_testenv) {
        my $testenv_name = $ENV{SELFTEST_TESTENV};
        $testenv_name = $testenv_default unless defined($testenv_name);
 
        my $testenv_vars = setup_env($testenv_name);
 
+       die("Unable to setup environment $testenv_name") unless ($testenv_vars);
+
        $ENV{PIDDIR} = $testenv_vars->{PIDDIR};
 
        my $envvarstr = exported_envvars_str($testenv_vars);
@@ -948,7 +938,8 @@ $envvarstr
 
                my $envvars = setup_env($envname);
                if (not defined($envvars)) {
-                       Subunit::skip_testsuite($name, 
+                       Subunit::start_testsuite($name);
+                       Subunit::end_testsuite($name, "error",
                                "unable to set up environment $envname");
                        next;
                }
@@ -957,14 +948,13 @@ $envvarstr
                # test runner for this test suite supports it.
                if ($$_[3] and $individual_tests and $individual_tests->{$name}) {
                        my ($fh, $listid_file) = tempfile(UNLINK => 0);
-                       foreach (@{$individual_tests->{$name}}) {
-                               print $fh "$_\n";
+                       foreach my $test (@{$individual_tests->{$name}}) {
+                               print $fh "$test\n";
                        }
                        $cmd .= " --load-list=$listid_file";
                }
 
-               run_testsuite($envname, $name, $cmd, $i, $suitestotal,
-                                     );
+               run_testsuite($envname, $name, $cmd, $i, $suitestotal);
 
                if (defined($opt_analyse_cmd)) {
                        system("$opt_analyse_cmd \"$name\"");