r22605: Set up all required environments before starting tests.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 30 Apr 2007 12:48:42 +0000 (12:48 +0000)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 30 Apr 2007 12:48:42 +0000 (12:48 +0000)
source/selftest/selftest.pl

index 104fc7d15fad78f1791316cb2db1840fc8af7681..b60613da64dad0a86a2e35bb13f43eafea6a1eef 100755 (executable)
@@ -134,6 +134,7 @@ my $ldap = undef;
 my $opt_analyse_cmd = undef;
 my $opt_resetup_env = undef;
 my $opt_bindir = undef;
+my $opt_no_lazy_setup = undef;
 
 my $srcdir = ".";
 my $builddir = ".";
@@ -454,6 +455,7 @@ 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,
            );
@@ -647,6 +649,7 @@ my @todo = ();
 my $testsdir = "$srcdir/selftest";
 $ENV{CONFIGURATION} = "--configfile=$conffile";
 
+my %required_envs = ();
 
 if ($opt_quick) {
        open(IN, "$testsdir/tests_quick.sh|");
@@ -661,8 +664,10 @@ while (<IN>) {
                $env =~ s/\n//g;
                my $cmdline = <IN>;
                $cmdline =~ s/\n//g;
-               push (@todo, [$name, $env, $cmdline]) 
-                       if (not defined($tests) or $name =~ /$tests/);
+               if (not defined($tests) or $name =~ /$tests/) {
+                       $required_envs{$env} = 1;
+                       push (@todo, [$name, $env, $cmdline]);
+               }
        } else {
                print;
        }
@@ -777,6 +782,10 @@ if ($from_build_farm) {
        $msg_ops = $plain_msg_ops;
 }
 
+if ($opt_no_lazy_setup) {
+       setup_env($_) foreach (keys %required_envs);
+}
+
 if ($opt_testenv) {
        my $testenv_name = $ENV{SELFTEST_TESTENV};
        $testenv_name = "dc" unless defined($testenv_name);