1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-08 21:18:16 +03:00

python/tests: add DynamicTestCase setUpDynamicTestCases() infrastructure

This can be used in order to run a sepcific test (coded just once)
with an autogenerated set of arguments.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14531

Pair-Programmed-With: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
This commit is contained in:
Stefan Metzmacher 2020-04-20 20:00:51 +02:00
parent 6aa396b0cd
commit 80347deb54

View File

@ -61,10 +61,37 @@ BINDIR = os.path.abspath(os.path.join(os.path.dirname(__file__),
HEXDUMP_FILTER = bytearray([x if ((len(repr(chr(x))) == 3) and (x < 127)) else ord('.') for x in range(256)])
def DynamicTestCase(cls):
cls.setUpDynamicTestCases()
return cls
class TestCase(unittest.TestCase):
"""A Samba test case."""
@classmethod
def generate_dynamic_test(cls, fnname, suffix, *args):
"""
fnname is something like "test_dynamic_sum"
suffix is something like "1plus2"
argstr could be (1, 2)
This would generate a test case called
"test_dynamic_sum_1plus2(self)" that
calls
self._test_dynamic_sum_with_args(1, 2)
"""
def fn(self):
getattr(self, "_%s_with_args" % fnname)(*args)
setattr(cls, "%s_%s" % (fnname, suffix), fn)
@classmethod
def setUpDynamicTestCases(cls):
"""This can be implemented in order to call cls.generate_dynamic_test()
In order to implement autogenerated testcase permutations.
"""
msg = "%s needs setUpDynamicTestCases() if @DynamicTestCase is used!" % (cls)
raise Exception(msg)
def setUp(self):
super(TestCase, self).setUp()
test_debug_level = os.getenv("TEST_DEBUG_LEVEL")