summaryrefslogtreecommitdiffstats
path: root/selftest
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-04-27 12:50:36 +1000
committerAndrew Bartlett <abartlet@samba.org>2012-04-27 14:51:05 +0200
commit0cb0427f134c8fdd79880642abef0ad1f115c3b3 (patch)
treeb85988945b8ca31237c62370070f4f3c8de615fd /selftest
parent67a851a05074d2ffd72d54a482a72859e8377b2f (diff)
downloadsamba-0cb0427f134c8fdd79880642abef0ad1f115c3b3.tar.gz
samba-0cb0427f134c8fdd79880642abef0ad1f115c3b3.tar.xz
samba-0cb0427f134c8fdd79880642abef0ad1f115c3b3.zip
selftest: Place the test environment at the end of the failure lines
This allows a knownfail entry to be added for only one environment, rather than all environments. Andrew Bartlett
Diffstat (limited to 'selftest')
-rwxr-xr-xselftest/filter-subunit9
-rw-r--r--selftest/knownfail84
-rw-r--r--selftest/selftesthelpers.py10
-rw-r--r--selftest/subunithelper.py13
4 files changed, 63 insertions, 53 deletions
diff --git a/selftest/filter-subunit b/selftest/filter-subunit
index bced14b101..2ed1430b69 100755
--- a/selftest/filter-subunit
+++ b/selftest/filter-subunit
@@ -40,6 +40,8 @@ parser.add_option("--fail-immediately", action="store_true",
help="Whether to stop on the first error", default=False)
parser.add_option("--prefix", type="string",
help="Add prefix to all test names")
+parser.add_option("--suffix", type="string",
+ help="Add suffix to all test names")
parser.add_option("--fail-on-empty", default=False,
action="store_true", help="Fail if there was no subunit output")
parser.add_option("--list", default=False,
@@ -48,10 +50,13 @@ opts, args = parser.parse_args()
if opts.list:
prefix = opts.prefix
+ suffix = opts.suffix
if not prefix:
prefix = ""
+ if not suffix:
+ suffix = ""
for l in sys.stdin:
- sys.stdout.write("%s%s\n" % (prefix, l.rstrip()))
+ sys.stdout.write("%s%s%s\n" % (prefix, l.rstrip(), suffix))
sys.exit(0)
if opts.expected_failures:
@@ -79,7 +84,7 @@ def handle_sigint(sig, stack):
signal.signal(signal.SIGINT, handle_sigint)
out = subunithelper.SubunitOps(sys.stdout)
-msg_ops = subunithelper.FilterOps(out, opts.prefix, expected_failures,
+msg_ops = subunithelper.FilterOps(out, opts.prefix, opts.suffix, expected_failures,
opts.strip_passed_output,
fail_immediately=opts.fail_immediately,
flapping=flapping)
diff --git a/selftest/knownfail b/selftest/knownfail
index 14dac54ece..440304f0db 100644
--- a/selftest/knownfail
+++ b/selftest/knownfail
@@ -35,7 +35,7 @@
^samba3.blackbox.rpcclient over ncacn_np with \[spnego,smb2,bigendian\]
^samba3.blackbox.rpcclient over ncacn_np with \[spnego,connect,smb2\]
^samba3.blackbox.rpcclient over ncacn_np with \[spnego,connect,smb2,bigendian\]
-^samba3.raw.composite.appendacl # This needs ACL and IDMAP behaviour that smbd cannot provide, including mapping of arbitary sids.
+^samba3.raw.composite.appendacl\(s3dc\)# This needs ACL and IDMAP behaviour that smbd cannot provide, including mapping of arbitary sids.
# these show that we still have some differences between our system
# with our internal iconv because it passes except when we bypass our
# internal iconv modules
@@ -58,8 +58,8 @@
^samba4.rpc.netlogon.*.LogonUasLogoff
^samba4.rpc.netlogon.*.DatabaseSync
^samba4.rpc.netlogon.*.DatabaseSync2
-^samba4.rpc.netlogon.*.LogonControl$
-^samba4.rpc.netlogon.*.LogonControl2$
+^samba4.rpc.netlogon.*.LogonControl\(.*\)$
+^samba4.rpc.netlogon.*.LogonControl2\(.*\)$
^samba4.rpc.netlogon.*.NetrEnumerateTrustedDomains
^samba4.rpc.netlogon.*.NetrEnumerateTrustedDomainsEx
^samba4.rpc.netlogon.*.GetPassword
@@ -75,26 +75,26 @@
^samba4.rap.*netsessiongetinfo
^samba4.rap.*netremotetod
# SMB2 in s4 does not seem to support rename correctly
-^samba4.smb2.rename.simple$
-^samba4.smb2.rename.no_sharing$
-^samba4.smb2.rename.share_delete_and_delete_access$
-^samba4.smb2.rename.no_share_delete_but_delete_access$
-^samba4.smb2.rename.share_delete_no_delete_access$
-^samba4.smb2.rename.no_share_delete_no_delete_access$
+^samba4.smb2.rename.simple\(.*\)$
+^samba4.smb2.rename.no_sharing\(.*\)$
+^samba4.smb2.rename.share_delete_and_delete_access\(.*\)$
+^samba4.smb2.rename.no_share_delete_but_delete_access\(.*\)$
+^samba4.smb2.rename.share_delete_no_delete_access\(.*\)$
+^samba4.smb2.rename.no_share_delete_no_delete_access\(.*\)$
^samba4.smb2.rename.msword
^samba4.winbind.struct.*.show_sequence # Not yet working in winbind
-^samba4.*base.delaywrite.*update of write time and SMBwrite truncate$
-^samba4.*base.delaywrite.*update of write time and SMBwrite truncate expand$
-^samba4.*base.delaywrite.*delayed update of write time 3a$
-^samba4.*base.delaywrite.*delayed update of write time 3c$
-^samba4.*base.delaywrite.*update of write time using SET_END_OF_FILE$
-^samba4.*base.delaywrite.*update of write time using SET_ALLOCATION_SIZE$
-^samba4.ldap.python \(dc\).Test add_ldif\(\) with BASE64 security descriptor input using WRONG domain SID$
+^samba4.*base.delaywrite.*update of write time and SMBwrite truncate\(.*\)$
+^samba4.*base.delaywrite.*update of write time and SMBwrite truncate expand\(.*\)$
+^samba4.*base.delaywrite.*delayed update of write time 3a\(.*\)$
+^samba4.*base.delaywrite.*delayed update of write time 3c\(.*\)$
+^samba4.*base.delaywrite.*update of write time using SET_END_OF_FILE\(.*\)$
+^samba4.*base.delaywrite.*update of write time using SET_ALLOCATION_SIZE\(.*\)$
+^samba4.ldap.python \(dc\).Test add_ldif\(\) with BASE64 security descriptor input using WRONG domain SID\(.*\)$
# some operations don't work over the CIFS NTVFS backend yet (eg. root_fid)
^samba4.ntvfs.cifs.*.base.createx_sharemodes_dir
^samba4.raw.lock.*.async # bug 6960
^samba4.smb2.lock.*.multiple-unlock # bug 6959
-^samba4.raw.sfileinfo.*.end-of-file$ # bug 6962
+^samba4.raw.sfileinfo.*.end-of-file\(.*\)$ # bug 6962
^samba4.raw.oplock.*.batch22 # bug 6963
^samba4.raw.lock.*.zerobyteread # bug 6974
^samba4.smb2.lock.*.zerobyteread # bug 6974
@@ -112,32 +112,32 @@
#^samba4.ldap.dirsync.python.dc..__main__.ExtendedDirsyncTests.*
^samba4.drs.fsmo.python
^samba4.libsmbclient.opendir.opendir # This requires netbios browsing
-^samba4.rpc.drsuapi.*.drsuapi.DsGetDomainControllerInfo$
-^samba4.rpc.drsuapi.*.drsuapi.DsCrackNames$
-^samba4.smb2.oplock.exclusive2$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.exclusive5$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.exclusive6$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.brl3$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.levelii500$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.brl1$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch22$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch19$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch12$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch11$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch1$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch6$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch9$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch10$ # samba 4 oplocks are a mess
-^samba4.smb2.oplock.batch20$ # samba 4 oplocks are a mess
+^samba4.rpc.drsuapi.*.drsuapi.DsGetDomainControllerInfo\(.*\)$
+^samba4.rpc.drsuapi.*.drsuapi.DsCrackNames\(.*\)$
+^samba4.smb2.oplock.exclusive2\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.exclusive5\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.exclusive6\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.brl3\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.levelii500\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.brl1\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch22\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch19\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch12\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch11\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch1\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch6\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch9\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch10\(.*\)$ # samba 4 oplocks are a mess
+^samba4.smb2.oplock.batch20\(.*\)$ # samba 4 oplocks are a mess
^samba4.smb2.getinfo.getinfo # streams on directories does not work
-^samba4.ntvfs.cifs.krb5.base.createx_access.createx_access$
-^samba4.ldap.acl.*.AclSearchTests.test_search_anonymous3$ # ACL search behaviour not enabled by default
-^samba4.ldap.acl.*.AclSearchTests.test_search1$ # ACL search behaviour not enabled by default
-^samba4.ldap.acl.*.AclSearchTests.test_search2$ # ACL search behaviour not enabled by default
-^samba4.ldap.acl.*.AclSearchTests.test_search3$ # ACL search behaviour not enabled by default
-^samba4.ldap.acl.*.AclSearchTests.test_search4$ # ACL search behaviour not enabled by default
-^samba4.ldap.acl.*.AclSearchTests.test_search5$ # ACL search behaviour not enabled by default
-^samba4.ldap.acl.*.AclSearchTests.test_search6$ # ACL search behaviour not enabled by default
+^samba4.ntvfs.cifs.krb5.base.createx_access.createx_access\(.*\)$
+^samba4.ldap.acl.*.AclSearchTests.test_search_anonymous3\(.*\)$ # ACL search behaviour not enabled by default
+^samba4.ldap.acl.*.AclSearchTests.test_search1\(.*\)$ # ACL search behaviour not enabled by default
+^samba4.ldap.acl.*.AclSearchTests.test_search2\(.*\)$ # ACL search behaviour not enabled by default
+^samba4.ldap.acl.*.AclSearchTests.test_search3\(.*\)$ # ACL search behaviour not enabled by default
+^samba4.ldap.acl.*.AclSearchTests.test_search4\(.*\)$ # ACL search behaviour not enabled by default
+^samba4.ldap.acl.*.AclSearchTests.test_search5\(.*\)$ # ACL search behaviour not enabled by default
+^samba4.ldap.acl.*.AclSearchTests.test_search6\(.*\)$ # ACL search behaviour not enabled by default
^samba4.rpc.lsa.forest.trust #Not fully provided by Samba4
^samba3.smb2.create.gentest
^samba3.smb2.create.blob
diff --git a/selftest/selftesthelpers.py b/selftest/selftesthelpers.py
index 991574e05f..7fc085477d 100644
--- a/selftest/selftesthelpers.py
+++ b/selftest/selftesthelpers.py
@@ -101,20 +101,20 @@ def plantestsuite(name, env, cmdline, allow_empty_output=False):
filter_subunit_args.append("--fail-on-empty")
if "$LISTOPT" in cmdline:
filter_subunit_args.append("$LISTOPT")
- print "%s 2>&1 | %s/selftest/filter-subunit %s --prefix=\"%s.\"" % (cmdline,
+ print "%s 2>&1 | %s/selftest/filter-subunit %s --prefix=\"%s.\" --suffix=\"(%s)\"" % (cmdline,
srcdir(),
" ".join(filter_subunit_args),
- name)
+ name, env)
if allow_empty_output:
print >>sys.stderr, "WARNING: allowing empty subunit output from %s" % name
-def add_prefix(prefix, support_list=False):
+def add_prefix(prefix, env, support_list=False):
if support_list:
listopt = "$LISTOPT "
else:
listopt = ""
- return "%s/selftest/filter-subunit %s--fail-on-empty --prefix=\"%s.\"" % (srcdir(), listopt, prefix)
+ return "%s/selftest/filter-subunit %s--fail-on-empty --prefix=\"%s.\" --suffix=\"(%s)\"" % (srcdir(), listopt, prefix, env)
def plantestsuite_loadlist(name, env, cmdline):
@@ -128,7 +128,7 @@ def plantestsuite_loadlist(name, env, cmdline):
if isinstance(cmdline, list):
cmdline = " ".join(cmdline)
support_list = ("$LISTOPT" in cmdline)
- print "%s $LOADLIST 2>&1 | %s" % (cmdline, add_prefix(name, support_list))
+ print "%s $LOADLIST 2>&1 | %s" % (cmdline, add_prefix(name, env, support_list))
def plantestsuite_idlist(name, env, cmdline):
diff --git a/selftest/subunithelper.py b/selftest/subunithelper.py
index b498878c59..057e139050 100644
--- a/selftest/subunithelper.py
+++ b/selftest/subunithelper.py
@@ -270,10 +270,14 @@ class FilterOps(testtools.testresult.TestResult):
self._ops.startTest(test)
def _add_prefix(self, test):
+ prefix = ""
+ suffix = ""
if self.prefix is not None:
- return subunit.RemotedTestCase(self.prefix + test.id())
- else:
- return test
+ prefix = self.prefix
+ if self.suffix is not None:
+ suffix = self.suffix
+
+ return subunit.RemotedTestCase(prefix + test.id() + suffix)
def addError(self, test, details=None):
test = self._add_prefix(test)
@@ -378,13 +382,14 @@ class FilterOps(testtools.testresult.TestResult):
self._ops.end_testsuite(name, result, reason)
- def __init__(self, out, prefix=None, expected_failures=None,
+ def __init__(self, out, prefix=None, suffix=None, expected_failures=None,
strip_ok_output=False, fail_immediately=False,
flapping=None):
self._ops = out
self.seen_output = False
self.output = None
self.prefix = prefix
+ self.suffix = suffix
if expected_failures is not None:
self.expected_failures = expected_failures
else: