selftest Add combined 'Samba' target module
authorAndrew Bartlett <abartlet@samba.org>
Mon, 18 Apr 2011 07:38:35 +0000 (17:38 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 19 Apr 2011 04:26:59 +0000 (14:26 +1000)
To work around environment variable handling, the initialisation of
NSS_WRAPPER_WINBIND_SO_PATH is pushed in to Samba3.pm (the s3 autoconf
build still overrides this)

Andrew Bartlett

selftest/selftest.pl
selftest/target/Samba.pm [new file with mode: 0644]
selftest/target/Samba3.pm
selftest/wscript

index c4afde75c0f4408fbb3117a45f2972edffa31451..fe786f841b84ec661f79afdf929dfca41ce1e54e 100755 (executable)
@@ -481,7 +481,11 @@ sub bindir_path($$) {
        return $path;
 }
 
-if ($opt_target eq "samba4") {
+if ($opt_target eq "samba") {
+       $testenv_default = "all";
+       require target::Samba;
+       $target = new Samba($bindir, \%binary_mapping, \&bindir_path, $ldap, $srcdir, $exeext);
+} elsif ($opt_target eq "samba4") {
        $testenv_default = "all";
        require target::Samba4;
        $target = new Samba4($bindir, \%binary_mapping, \&bindir_path, $ldap, $srcdir, $exeext);
diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm
new file mode 100644 (file)
index 0000000..703d0b5
--- /dev/null
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+# Bootstrap Samba and run a number of tests against it.
+# Copyright (C) 2005-2007 Jelmer Vernooij <jelmer@samba.org>
+# Published under the GNU GPL, v3 or later.
+
+package Samba;
+
+use strict;
+use target::Samba3;
+use target::Samba4;
+
+sub new($$$$$) {
+       my ($classname, $bindir, $binary_mapping, $bindir_path, $ldap, $srcdir, $exeext) = @_;
+
+       my $self = {
+           samba3 => new Samba3($bindir,$binary_mapping, $bindir_path, $srcdir, $exeext),
+           samba4 => new Samba4($bindir,$binary_mapping, $bindir_path, $ldap, $srcdir, $exeext),
+       };
+       bless $self;
+       return $self;
+}
+
+sub setup_env($$$)
+{
+       my ($self, $envname, $path) = @_;
+
+       $ENV{ENVNAME} = $envname;
+
+       my $env = $self->{samba4}->setup_env($envname, $path);
+       if (defined($env)) {
+           $env->{target} = $self->{samba4};
+       } else {
+               $env = $self->{samba3}->setup_env($envname, $path);
+               if (defined($env)) {
+                   $env->{target} = $self->{samba3};
+               }
+       }
+       if (not defined $env) {
+               warn("Samba can't provide environment '$envname'");
+               return undef;
+       }
+       return $env;
+}
+
+1;
index 06a0dc319958f231de8c1f2a7f89c0b78ddd3e8e..13023791da64ef2b037338daf92fc3eae460916a 100644 (file)
@@ -850,6 +850,9 @@ domusers:X:$gid_domusers:
        $ret{NSS_WRAPPER_PASSWD} = $nss_wrapper_passwd;
        $ret{NSS_WRAPPER_GROUP} = $nss_wrapper_group;
        $ret{NSS_WRAPPER_WINBIND_SO_PATH} = $ENV{NSS_WRAPPER_WINBIND_SO_PATH};
+        if (not defined($ret{NSS_WRAPPER_WINBIND_SO_PATH})) {
+               $ret{NSS_WRAPPER_WINBIND_SO_PATH} = $self->{bindir_path}->($self, "default/nsswitch/libnss-winbind.so");
+        }
        $ret{LOCAL_PATH} = "$shrdir";
 
        return \%ret;
index afd9b9d4eb767ffc26e3a9af923795e5aa1e1a2c..ecf650274a777076e251e7ff1b51342a8a03a5a0 100644 (file)
@@ -180,8 +180,6 @@ def cmd_testonly(opt):
     if env.SELFTEST_TARGET == "samba4":
         env.SELFTEST_DIR = "${srcdir}/source4/selftest"
     elif env.SELFTEST_TARGET == "samba3":
-        #This must *only* be set for a Samba3 test, as it will cause timeouts otherwise (as it tries to talk to winbindd)
-        os.environ['NSS_WRAPPER_WINBIND_SO_PATH'] = os.path.abspath('bin/default/nsswitch/libnss-winbind.so')
         env.SELFTEST_DIR = "${srcdir}/source3/selftest"
 
         # We use the full path rather than relative path because it cause problems on some plateforms (ie. solaris 8).