Author: jelmer
Date: 2007-01-14 04:32:11 +0000 (Sun, 14 Jan 2007)
New Revision: 20756

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=20756

Log:
Update to use generated recipes.

Modified:
   branches/SAMBA_4_0/source/script/tests/selftest.pl


Changeset:
Modified: branches/SAMBA_4_0/source/script/tests/selftest.pl
===================================================================
--- branches/SAMBA_4_0/source/script/tests/selftest.pl  2007-01-14 03:38:56 UTC 
(rev 20755)
+++ branches/SAMBA_4_0/source/script/tests/selftest.pl  2007-01-14 04:32:11 UTC 
(rev 20756)
@@ -104,7 +104,7 @@
  --target=samba4|samba3|win Samba version to target
  --socket-wrapper           enable socket wrapper
  --quick                    run quick overall test
-
+ --one                      abort when the first test fails
 ";
        exit(0);
 }
@@ -113,12 +113,14 @@
 my $opt_target = "samba4";
 my $opt_quick = 0;
 my $opt_socket_wrapper = 0;
+my $opt_one = 0;
 
 my $result = GetOptions (
            'help|h|?' => \$opt_help,
                'target' => \$opt_target,
                'socket-wrapper' => \$opt_socket_wrapper,
-               'quick' => \$opt_quick
+               'quick' => \$opt_quick,
+               'one' => \$opt_one
            );
 
 if (not $result) {
@@ -263,16 +265,50 @@
 
 # start off with 0 failures
 $ENV{failed} = 0;
-$ENV{totalfailed} = 0;
+my $totalfailed = 0;
 
+my @todo = ();
+
 if ($opt_target eq "win") {
        system("$testsdir/test_win.sh");
-} elsif ($opt_quick) {
-       system("$testsdir/tests_quick.sh");
-} else {
-       system("$testsdir/tests_all.sh");
+} else { 
+       if ($opt_quick) {
+               open(IN, "$testsdir/tests_quick.sh|");
+       } else {
+               open(IN, "$testsdir/tests_all.sh|");
+       }
+       while (<IN>) {
+               if ($_ eq "-- TEST --\n") {
+                       my $name = <IN>;
+                       $name =~ s/\n//g;
+                       my $cmdline = <IN>;
+                       $cmdline =~ s/\n//g;
+                       push (@todo, [$name, $cmdline]);
+               } else {
+                       print;
+               }
+       }
+       close(IN);
 }
 
+my $total = $#todo + 1;
+my $i = 0;
+$| = 1;
+
+foreach (@todo) {
+       $i = $i + 1;
+       my $err = "";
+       if ($totalfailed > 0) { $err = ", $totalfailed errors"; }
+       printf "[$i/$total in " . (time() - $start)."s$err] $$_[0]\n";
+       my $ret = system("$$_[1] >/dev/null 2>/dev/null");
+       if ($ret != 0) {
+               $totalfailed++;
+               exit(1) if ($opt_one);
+       }
+}
+
+print "\n";
+
 close(DATA);
 
 my $failed = $? >> 8;
@@ -291,6 +327,7 @@
 
 my $end=time();
 print "DURATION: " . ($end-$start). " seconds\n";
+print "$totalfailed failures\n";
 
 # if there were any valgrind failures, show them
 foreach (<$prefix/valgrind.log*>) {

Reply via email to