diff options
Diffstat (limited to 'Lib/test/test_functools.py')
-rw-r--r-- | Lib/test/test_functools.py | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py index 4794a7465f0..f7e09fd771e 100644 --- a/Lib/test/test_functools.py +++ b/Lib/test/test_functools.py @@ -21,8 +21,10 @@ from weakref import proxy import contextlib from inspect import Signature +from test.support import ALWAYS_EQ from test.support import import_helper from test.support import threading_helper +from test.support import cpython_only from test.support import EqualToForwardRef import functools @@ -63,6 +65,14 @@ class BadTuple(tuple): class MyDict(dict): pass +class TestImportTime(unittest.TestCase): + + @cpython_only + def test_lazy_import(self): + import_helper.ensure_lazy_imports( + "functools", {"os", "weakref", "typing", "annotationlib", "warnings"} + ) + class TestPartial: @@ -235,6 +245,13 @@ class TestPartial: actual_args, actual_kwds = p('x', 'y') self.assertEqual(actual_args, ('x', 0, 'y', 1)) self.assertEqual(actual_kwds, {}) + # Checks via `is` and not `eq` + # thus ALWAYS_EQ isn't treated as Placeholder + p = self.partial(capture, ALWAYS_EQ) + actual_args, actual_kwds = p() + self.assertEqual(len(actual_args), 1) + self.assertIs(actual_args[0], ALWAYS_EQ) + self.assertEqual(actual_kwds, {}) def test_placeholders_optimization(self): PH = self.module.Placeholder @@ -251,6 +268,17 @@ class TestPartial: self.assertEqual(p2.args, (PH, 0)) self.assertEqual(p2(1), ((1, 0), {})) + def test_placeholders_kw_restriction(self): + PH = self.module.Placeholder + with self.assertRaisesRegex(TypeError, "Placeholder"): + self.partial(capture, a=PH) + # Passes, as checks via `is` and not `eq` + p = self.partial(capture, a=ALWAYS_EQ) + actual_args, actual_kwds = p() + self.assertEqual(actual_args, ()) + self.assertEqual(len(actual_kwds), 1) + self.assertIs(actual_kwds['a'], ALWAYS_EQ) + def test_construct_placeholder_singleton(self): PH = self.module.Placeholder tp = type(PH) @@ -2952,7 +2980,7 @@ class TestSingleDispatch(unittest.TestCase): self.assertEqual(meth.__qualname__, prefix + meth.__name__) self.assertEqual(meth.__doc__, ('My function docstring' - if support.HAVE_DOCSTRINGS + if support.HAVE_PY_DOCSTRINGS else None)) self.assertEqual(meth.__annotations__['arg'], int) @@ -3107,7 +3135,7 @@ class TestSingleDispatch(unittest.TestCase): with self.subTest(meth=meth): self.assertEqual(meth.__doc__, ('My function docstring' - if support.HAVE_DOCSTRINGS + if support.HAVE_PY_DOCSTRINGS else None)) self.assertEqual(meth.__annotations__['arg'], int) @@ -3584,7 +3612,7 @@ class TestCachedProperty(unittest.TestCase): def test_doc(self): self.assertEqual(CachedCostItem.cost.__doc__, ("The cost of the item." - if support.HAVE_DOCSTRINGS + if support.HAVE_PY_DOCSTRINGS else None)) def test_module(self): |