summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_unittest/test_loader.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-10-02 14:57:44 (GMT)
committerGitHub <noreply@github.com>2023-10-02 14:57:44 (GMT)
commit2fb39f73ed0b96c0097106226d44f27472be630c (patch)
tree5456f55768a163a34126adc779f8ee4de2d3b8f9 /Lib/test/test_unittest/test_loader.py
parenta8431123c23c248e36ecb5d2c01ba3f8b5197360 (diff)
downloadcpython-2fb39f73ed0b96c0097106226d44f27472be630c.zip
cpython-2fb39f73ed0b96c0097106226d44f27472be630c.tar.gz
cpython-2fb39f73ed0b96c0097106226d44f27472be630c.tar.bz2
[3.12] gh-84867: Do not load tests from TestCase and FunctionTestCase (GH-100497) (#109327)
gh-84867: Do not load tests from TestCase and FunctionTestCase (GH-100497) (cherry picked from commit 66d1d7eb067d445f1ade151f4a6db3864dd9109f) Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
Diffstat (limited to 'Lib/test/test_unittest/test_loader.py')
-rw-r--r--Lib/test/test_unittest/test_loader.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/Lib/test/test_unittest/test_loader.py b/Lib/test/test_unittest/test_loader.py
index a203145..9fc0d95 100644
--- a/Lib/test/test_unittest/test_loader.py
+++ b/Lib/test/test_unittest/test_loader.py
@@ -82,6 +82,22 @@ class Test_TestLoader(unittest.TestCase):
self.assertIsInstance(suite, loader.suiteClass)
self.assertEqual(list(suite), [Foo('runTest')])
+ # "Do not load any tests from `TestCase` class itself."
+ def test_loadTestsFromTestCase__from_TestCase(self):
+ loader = unittest.TestLoader()
+
+ suite = loader.loadTestsFromTestCase(unittest.TestCase)
+ self.assertIsInstance(suite, loader.suiteClass)
+ self.assertEqual(list(suite), [])
+
+ # "Do not load any tests from `FunctionTestCase` class."
+ def test_loadTestsFromTestCase__from_FunctionTestCase(self):
+ loader = unittest.TestLoader()
+
+ suite = loader.loadTestsFromTestCase(unittest.FunctionTestCase)
+ self.assertIsInstance(suite, loader.suiteClass)
+ self.assertEqual(list(suite), [])
+
################################################################
### /Tests for TestLoader.loadTestsFromTestCase
@@ -103,6 +119,19 @@ class Test_TestLoader(unittest.TestCase):
expected = [loader.suiteClass([MyTestCase('test')])]
self.assertEqual(list(suite), expected)
+ # "This test ensures that internal `TestCase` subclasses are not loaded"
+ def test_loadTestsFromModule__TestCase_subclass_internals(self):
+ # See https://github.com/python/cpython/issues/84867
+ m = types.ModuleType('m')
+ # Simulate imported names:
+ m.TestCase = unittest.TestCase
+ m.FunctionTestCase = unittest.FunctionTestCase
+
+ loader = unittest.TestLoader()
+ suite = loader.loadTestsFromModule(m)
+ self.assertIsInstance(suite, loader.suiteClass)
+ self.assertEqual(list(suite), [])
+
# "This method searches `module` for classes derived from TestCase"
#
# What happens if no tests are found (no TestCase instances)?