summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/main.mk2
-rw-r--r--source4/samba4-skip20
-rwxr-xr-xsource4/script/tests/selftest.pl37
-rwxr-xr-xsource4/script/tests/test_local.sh17
-rwxr-xr-xsource4/script/tests/test_posix.sh26
5 files changed, 57 insertions, 45 deletions
diff --git a/source4/main.mk b/source4/main.mk
index 18ced055f5..7807b5f52f 100644
--- a/source4/main.mk
+++ b/source4/main.mk
@@ -283,7 +283,7 @@ realdistclean: distclean removebackup
check:: test
-SELFTEST = $(srcdir)/script/tests/selftest.pl --prefix=${selftest_prefix} --builddir=$(builddir) --srcdir=$(srcdir) --expected-failures=samba4-knownfail
+SELFTEST = $(srcdir)/script/tests/selftest.pl --prefix=${selftest_prefix} --builddir=$(builddir) --srcdir=$(srcdir) --expected-failures=samba4-knownfail --skip=samba4-skip
test: all libraries
$(SELFTEST) $(DEFAULT_TEST_OPTIONS) $(TESTS) --immediate
diff --git a/source4/samba4-skip b/source4/samba4-skip
new file mode 100644
index 0000000000..00ad25e791
--- /dev/null
+++ b/source4/samba4-skip
@@ -0,0 +1,20 @@
+BASE-CHARSET
+BASE-DEFER_OPEN
+BASE-DELAYWRITE
+RAW-COMPOSITE
+RAW-OPLOCK
+BASE-IOMETER
+BASE-SAMBA3ERROR
+BASE-CASETABLE
+BASE-NTTRANS
+BASE-BENCH-HOLDCON
+BASE-SCAN-MAXFID
+RAW-BENCH-OPLOCK
+RAW-SAMBA3HIDE
+RAW-SAMBA3CLOSEERR
+RAW-SAMBA3CHECKFSP
+RAW-SAMBA3BADPATH
+RAW-SCAN-EAMAX
+SMB2-LOCK
+SMB2-NOTIFY
+LOCAL-RESOLVE
diff --git a/source4/script/tests/selftest.pl b/source4/script/tests/selftest.pl
index 6c2ea6d0b1..e75e5d2c56 100755
--- a/source4/script/tests/selftest.pl
+++ b/source4/script/tests/selftest.pl
@@ -69,6 +69,11 @@ The format for the file is, one entry per line:
TESTSUITE-NAME/TEST-NAME
+=item I<--skip>
+
+Specify a file containing a list of tests that should be skipped. Possible candidates are
+tests that segfault the server, flip or don't end.
+
=item I<--one>
Abort as soon as one test fails.
@@ -123,6 +128,7 @@ my $opt_socket_wrapper_pcap = undef;
my $opt_one = 0;
my $opt_immediate = 0;
my $opt_expected_failures = undef;
+my $opt_skip = undef;
my $opt_verbose = 0;
my $srcdir = ".";
@@ -132,10 +138,12 @@ my $prefix = "st";
my $suitesfailed = [];
my $start = time();
my @expected_failures = ();
+my @skips = ();
my $statistics = {
SUITES_FAIL => 0,
SUITES_OK => 0,
+ SUITES_SKIPPED => 0,
TESTS_UNEXPECTED_OK => 0,
TESTS_EXPECTED_OK => 0,
@@ -148,13 +156,19 @@ sub expecting_failure($)
{
my $fullname = shift;
- foreach (@expected_failures) {
- return 1 if $fullname =~ /^$_$/;
- }
+ return 1 if (grep(/^$fullname$/, @expected_failures));
return 0;
}
+sub skip($)
+{
+ my $fullname = shift;
+
+ return 1 if (grep(/^$fullname$/, @skips));
+ return 0;
+}
+
sub run_test_buildfarm($$$$)
{
my ($name, $cmd, $i, $suitestotal) = @_;
@@ -310,6 +324,7 @@ my $result = GetOptions (
'one' => \$opt_one,
'immediate' => \$opt_immediate,
'expected-failures=s' => \$opt_expected_failures,
+ 'skip=s' => \$opt_skip,
'srcdir=s' => \$srcdir,
'builddir=s' => \$builddir,
'verbose' => \$opt_verbose
@@ -419,6 +434,15 @@ if (defined($opt_expected_failures)) {
close(KNOWN);
}
+if (defined($opt_skip)) {
+ open(SKIP, "<$opt_skip") or die("unable to read skip file: $!");
+ while (<SKIP>) {
+ chomp;
+ s/([ \t]+)\#(.*)$//;
+ push (@skips, $_); }
+ close(SKIP);
+}
+
my $test_fifo = "$prefix/smbd_test.fifo";
$ENV{SMBD_TEST_FIFO} = $test_fifo;
@@ -496,6 +520,13 @@ foreach (@todo) {
my $cmd = $$_[1];
$cmd =~ s/([\(\)])/\\$1/g;
my $name = $$_[0];
+
+ if (skip($name)) {
+ print "SKIPPED: $name\n";
+ $statistics->{SUITES_SKIPPED}++;
+ next;
+ }
+
if ($from_build_farm) {
run_test_buildfarm($name, $cmd, $i, $suitestotal);
} else {
diff --git a/source4/script/tests/test_local.sh b/source4/script/tests/test_local.sh
index 6a96987b9c..2751c73b11 100755
--- a/source4/script/tests/test_local.sh
+++ b/source4/script/tests/test_local.sh
@@ -21,25 +21,10 @@ incdir=`dirname $0`
# the local tests don't need smbd
SMBD_TEST_FIFO=""
export SMBD_TEST_FIFO
-skipped="LOCAL-RESOLVE"
-
-echo "WARNING: Skipping $skipped"
failed=0
for t in $local_tests; do
- skip=0
- for s in $skipped; do
- if [ x"$s" = x"$t" ]; then
- skip=1;
- break;
- fi
- done
- if [ $skip = 1 ]; then
- continue;
- fi
-
- name="$t"
- testit "$name" $VALGRIND bin/smbtorture $TORTURE_OPTIONS ncalrpc: $t "$*"
+ testit "$t" $VALGRIND bin/smbtorture $TORTURE_OPTIONS ncalrpc: $t "$*"
done
testok $0 $failed
diff --git a/source4/script/tests/test_posix.sh b/source4/script/tests/test_posix.sh
index 8f9013df62..9099fe31a0 100755
--- a/source4/script/tests/test_posix.sh
+++ b/source4/script/tests/test_posix.sh
@@ -25,34 +25,10 @@ raw=`bin/smbtorture --list | grep "^RAW-" | xargs`
base=`bin/smbtorture --list | grep "^BASE-" | xargs`
tests="$base $raw $smb2"
-#
-# please add tests you want to be skipped here!
-#
-skipped="BASE-CHARSET BASE-DEFER_OPEN BASE-DELAYWRITE RAW-COMPOSITE RAW-OPLOCK BASE-IOMETER"
-skipped="$skipped BASE-SAMBA3ERROR BASE-CASETABLE BASE-NTTRANS BASE-BENCH-HOLDCON BASE-SCAN-MAXFID"
-skipped="$skipped RAW-BENCH-OPLOCK RAW-SAMBA3HIDE RAW-SAMBA3CLOSEERR RAW-SAMBA3CHECKFSP RAW-SAMBA3BADPATH"
-skipped="$skipped RAW-SCAN-EAMAX SMB2-LOCK SMB2-NOTIFY"
-
-echo "WARNING: Skipping tests $skipped"
-
-failed=0
for t in $tests; do
if [ ! -z "$start" -a "$start" != $t ]; then
continue;
fi
- skip=0
- for s in $skipped; do
- if [ x"$s" = x"$t" ]; then
- skip=1;
- break;
- fi
- done
- if [ $skip = 1 ]; then
- continue;
- fi
start=""
- name="$t"
- testit "$name" $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t
+ testit "$t" $VALGRIND bin/smbtorture $TORTURE_OPTIONS $ADDARGS $unc -U"$username"%"$password" $t
done
-
-testok $0 $failed