Add some sanity checks to unittest.TestSuite's addTest(s) methods.
Fixes #878275.
This commit is contained in:
parent
9decc0dc8b
commit
d9e50261e8
|
@ -1581,6 +1581,19 @@ class Test_TestSuite(TestCase, TestEquality):
|
|||
else:
|
||||
self.fail("Failed to raise TypeError")
|
||||
|
||||
def test_addTest__noncallable(self):
|
||||
suite = unittest.TestSuite()
|
||||
self.assertRaises(TypeError, suite.addTest, 5)
|
||||
|
||||
def test_addTest__casesuiteclass(self):
|
||||
suite = unittest.TestSuite()
|
||||
self.assertRaises(TypeError, suite.addTest, Test_TestSuite)
|
||||
self.assertRaises(TypeError, suite.addTest, unittest.TestSuite)
|
||||
|
||||
def test_addTests__string(self):
|
||||
suite = unittest.TestSuite()
|
||||
self.assertRaises(TypeError, suite.addTests, "foo")
|
||||
|
||||
|
||||
class Test_FunctionTestCase(TestCase):
|
||||
|
||||
|
|
|
@ -428,9 +428,18 @@ class TestSuite:
|
|||
return cases
|
||||
|
||||
def addTest(self, test):
|
||||
# sanity checks
|
||||
if not callable(test):
|
||||
raise TypeError("the test to add must be callable")
|
||||
if (isinstance(test, (type, types.ClassType)) and
|
||||
issubclass(test, (TestCase, TestSuite))):
|
||||
raise TypeError("TestCases and TestSuites must be instantiated "
|
||||
"before passing them to addTest()")
|
||||
self._tests.append(test)
|
||||
|
||||
def addTests(self, tests):
|
||||
if isinstance(tests, basestring):
|
||||
raise TypeError("tests must be an iterable of tests, not a string")
|
||||
for test in tests:
|
||||
self.addTest(test)
|
||||
|
||||
|
|
Loading…
Reference in New Issue