s4-selftest: fixed up exit codes on signals for make test
authorAndrew Tridgell <tridge@samba.org>
Sat, 2 Oct 2010 19:42:00 +0000 (12:42 -0700)
committerAndrew Tridgell <tridge@samba.org>
Sun, 3 Oct 2010 04:11:52 +0000 (21:11 -0700)
also set $ENVNAME in launched servers

selftest/target/Samba4.pm

index 53237e050012f7d72301c7638ec4ddf33a977ce5..1e65c66384d16e36f81732ffbe715960555d085d 100644 (file)
@@ -88,7 +88,7 @@ sub check_or_start($$$)
        POSIX::mkfifo($env_vars->{SAMBA_TEST_FIFO}, 0700);
        unlink($env_vars->{SAMBA_TEST_LOG});
        
-       print "STARTING SAMBA... ";
+       print "STARTING SAMBA for $ENV{ENVNAME}\n";
        my $pid = fork();
        if ($pid == 0) {
                open STDIN, $env_vars->{SAMBA_TEST_FIFO};
@@ -139,20 +139,23 @@ sub check_or_start($$$)
                        $model = $ENV{SAMBA_PROCESS_MODEL};
                }
                my $ret = system("$valgrind $samba $optarg $env_vars->{CONFIGURATION} -M $model -i");
-               if ($? == -1) {
+               if ($ret == -1) {
                        print "Unable to start $samba: $ret: $!\n";
                        exit 1;
                }
+               my $exit = ($ret >> 8);
                unlink($env_vars->{SAMBA_TEST_FIFO});
-               my $exit = $? >> 8;
                if ($ret == 0) {
-                       print "$samba exits with status $exit\n";
+                       print "$samba exited with no error\n";
+                       exit 0;
                } elsif ( $ret & 127 ) {
                        print "$samba got signal ".($ret & 127)." and exits with $exit!\n";
                } else {
-                       $ret = $? >> 8;
                        print "$samba failed with status $exit!\n";
                }
+               if ($exit == 0) {
+                       $exit = -1;
+               }
                exit $exit;
        }
        print "DONE\n";
@@ -1251,6 +1254,8 @@ sub setup_env($$$)
 {
        my ($self, $envname, $path) = @_;
 
+       $ENV{ENVNAME} = $envname;
+
        if ($envname eq "dc") {
                return $self->setup_dc("$path/dc");
        } elsif ($envname eq "fl2000dc") {