mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
Issue #27063: Some unittest loader tests were silently skipped.
This commit is contained in:
parent
13e602ea0f
commit
0dad755600
1 changed files with 28 additions and 26 deletions
|
@ -8,7 +8,7 @@ import unittest
|
||||||
# test isolation and reproducibility.
|
# test isolation and reproducibility.
|
||||||
def warningregistry(func):
|
def warningregistry(func):
|
||||||
def wrapper(*args, **kws):
|
def wrapper(*args, **kws):
|
||||||
missing = object()
|
missing = []
|
||||||
saved = getattr(warnings, '__warningregistry__', missing).copy()
|
saved = getattr(warnings, '__warningregistry__', missing).copy()
|
||||||
try:
|
try:
|
||||||
return func(*args, **kws)
|
return func(*args, **kws)
|
||||||
|
@ -20,6 +20,7 @@ def warningregistry(func):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
warnings.__warningregistry__ = saved
|
warnings.__warningregistry__ = saved
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
class Test_TestLoader(unittest.TestCase):
|
class Test_TestLoader(unittest.TestCase):
|
||||||
|
@ -197,9 +198,9 @@ class Test_TestLoader(unittest.TestCase):
|
||||||
# ignored (and deprecated).
|
# ignored (and deprecated).
|
||||||
load_tests_args = []
|
load_tests_args = []
|
||||||
with warnings.catch_warnings(record=False):
|
with warnings.catch_warnings(record=False):
|
||||||
warnings.simplefilter('never')
|
warnings.simplefilter('ignore')
|
||||||
suite = loader.loadTestsFromModule(m, use_load_tests=False)
|
suite = loader.loadTestsFromModule(m, use_load_tests=False)
|
||||||
self.assertEqual(load_tests_args, [loader, suite, None])
|
self.assertEqual(load_tests_args, [loader, suite, None])
|
||||||
|
|
||||||
@warningregistry
|
@warningregistry
|
||||||
def test_loadTestsFromModule__use_load_tests_deprecated_positional(self):
|
def test_loadTestsFromModule__use_load_tests_deprecated_positional(self):
|
||||||
|
@ -221,10 +222,10 @@ class Test_TestLoader(unittest.TestCase):
|
||||||
with warnings.catch_warnings(record=True) as w:
|
with warnings.catch_warnings(record=True) as w:
|
||||||
warnings.simplefilter('always')
|
warnings.simplefilter('always')
|
||||||
suite = loader.loadTestsFromModule(m, False)
|
suite = loader.loadTestsFromModule(m, False)
|
||||||
self.assertIsInstance(suite, unittest.TestSuite)
|
self.assertIsInstance(suite, unittest.TestSuite)
|
||||||
# load_tests was still called because use_load_tests is deprecated
|
# load_tests was still called because use_load_tests is deprecated
|
||||||
# and ignored.
|
# and ignored.
|
||||||
self.assertEqual(load_tests_args, [loader, suite, None])
|
self.assertEqual(load_tests_args, [loader, suite, None])
|
||||||
# We got a warning.
|
# We got a warning.
|
||||||
self.assertIs(w[-1].category, DeprecationWarning)
|
self.assertIs(w[-1].category, DeprecationWarning)
|
||||||
self.assertEqual(str(w[-1].message),
|
self.assertEqual(str(w[-1].message),
|
||||||
|
@ -249,14 +250,14 @@ class Test_TestLoader(unittest.TestCase):
|
||||||
with warnings.catch_warnings(record=True) as w:
|
with warnings.catch_warnings(record=True) as w:
|
||||||
warnings.simplefilter('always')
|
warnings.simplefilter('always')
|
||||||
suite = loader.loadTestsFromModule(m, use_load_tests=False)
|
suite = loader.loadTestsFromModule(m, use_load_tests=False)
|
||||||
self.assertIsInstance(suite, unittest.TestSuite)
|
self.assertIsInstance(suite, unittest.TestSuite)
|
||||||
# load_tests was still called because use_load_tests is deprecated
|
# load_tests was still called because use_load_tests is deprecated
|
||||||
# and ignored.
|
# and ignored.
|
||||||
self.assertEqual(load_tests_args, [loader, suite, None])
|
self.assertEqual(load_tests_args, [loader, suite, None])
|
||||||
# We got a warning.
|
# We got a warning.
|
||||||
self.assertIs(w[-1].category, DeprecationWarning)
|
self.assertIs(w[-1].category, DeprecationWarning)
|
||||||
self.assertEqual(str(w[-1].message),
|
self.assertEqual(str(w[-1].message),
|
||||||
'use_load_tests is deprecated and ignored')
|
'use_load_tests is deprecated and ignored')
|
||||||
|
|
||||||
@warningregistry
|
@warningregistry
|
||||||
def test_loadTestsFromModule__too_many_positional_args(self):
|
def test_loadTestsFromModule__too_many_positional_args(self):
|
||||||
|
@ -274,17 +275,18 @@ class Test_TestLoader(unittest.TestCase):
|
||||||
m.load_tests = load_tests
|
m.load_tests = load_tests
|
||||||
loader = unittest.TestLoader()
|
loader = unittest.TestLoader()
|
||||||
with self.assertRaises(TypeError) as cm, \
|
with self.assertRaises(TypeError) as cm, \
|
||||||
warnings.catch_warning(record=True) as w:
|
warnings.catch_warnings(record=True) as w:
|
||||||
|
warnings.simplefilter('always')
|
||||||
loader.loadTestsFromModule(m, False, 'testme.*')
|
loader.loadTestsFromModule(m, False, 'testme.*')
|
||||||
# We still got the deprecation warning.
|
# We still got the deprecation warning.
|
||||||
self.assertIs(w[-1].category, DeprecationWarning)
|
self.assertIs(w[-1].category, DeprecationWarning)
|
||||||
self.assertEqual(str(w[-1].message),
|
self.assertEqual(str(w[-1].message),
|
||||||
'use_load_tests is deprecated and ignored')
|
'use_load_tests is deprecated and ignored')
|
||||||
# We also got a TypeError for too many positional arguments.
|
# We also got a TypeError for too many positional arguments.
|
||||||
self.assertEqual(type(cm.exception), TypeError)
|
self.assertEqual(type(cm.exception), TypeError)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
str(cm.exception),
|
str(cm.exception),
|
||||||
'loadTestsFromModule() takes 1 positional argument but 3 were given')
|
'loadTestsFromModule() takes 1 positional argument but 3 were given')
|
||||||
|
|
||||||
@warningregistry
|
@warningregistry
|
||||||
def test_loadTestsFromModule__use_load_tests_other_bad_keyword(self):
|
def test_loadTestsFromModule__use_load_tests_other_bad_keyword(self):
|
||||||
|
@ -302,7 +304,7 @@ class Test_TestLoader(unittest.TestCase):
|
||||||
m.load_tests = load_tests
|
m.load_tests = load_tests
|
||||||
loader = unittest.TestLoader()
|
loader = unittest.TestLoader()
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
warnings.simplefilter('never')
|
warnings.simplefilter('ignore')
|
||||||
with self.assertRaises(TypeError) as cm:
|
with self.assertRaises(TypeError) as cm:
|
||||||
loader.loadTestsFromModule(
|
loader.loadTestsFromModule(
|
||||||
m, use_load_tests=False, very_bad=True, worse=False)
|
m, use_load_tests=False, very_bad=True, worse=False)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue