summaryrefslogtreecommitdiff
path: root/source4/script
diff options
context:
space:
mode:
Diffstat (limited to 'source4/script')
-rwxr-xr-xsource4/script/tests/selftest.pl51
1 files changed, 44 insertions, 7 deletions
diff --git a/source4/script/tests/selftest.pl b/source4/script/tests/selftest.pl
index bb76eff913..b14333e0b5 100755
--- a/source4/script/tests/selftest.pl
+++ b/source4/script/tests/selftest.pl
@@ -104,7 +104,7 @@ Generic options:
--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_help = 0;
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 @@ system("bin/nmblookup $ENV{CONFIGURATION} -U $ENV{SERVER} $ENV{NETBIOSNAME}");
# 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 @@ if ($ldap) {
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*>) {