Lines Matching refs:self
29 async def test_enter(self):
31 async def __aexit__(self, *args):
35 self.assertIs(await manager.__aenter__(), manager)
38 self.assertIs(manager, context)
41 async def test_async_gen_propagates_generator_exit(self):
54 with self.assertRaises(ValueError):
60 self.assertEqual(ret, [11])
62 def test_exit_is_abstract(self):
66 with self.assertRaises(TypeError):
69 def test_structural_subclassing(self):
71 async def __aenter__(self):
72 return self
73 async def __aexit__(self, exc_type, exc_value, traceback):
76 self.assertTrue(issubclass(ManagerFromScratch, AbstractAsyncContextManager))
79 async def __aexit__(self, *args):
82 self.assertTrue(issubclass(DefaultEnter, AbstractAsyncContextManager))
87 self.assertFalse(issubclass(NoneAenter, AbstractAsyncContextManager))
92 self.assertFalse(issubclass(NoneAexit, AbstractAsyncContextManager))
98 async def test_contextmanager_plain(self):
106 self.assertEqual(state, [1])
107 self.assertEqual(x, 42)
109 self.assertEqual(state, [1, 42, 999])
112 async def test_contextmanager_finally(self):
121 with self.assertRaises(ZeroDivisionError):
123 self.assertEqual(state, [1])
124 self.assertEqual(x, 42)
127 self.assertEqual(state, [1, 42, 999])
130 async def test_contextmanager_traceback(self):
141 self.assertEqual(len(frames), 1)
142 self.assertEqual(frames[0].name, 'test_contextmanager_traceback')
143 self.assertEqual(frames[0].line, '1/0')
155 self.assertEqual(len(frames), 1)
156 self.assertEqual(frames[0].name, 'test_contextmanager_traceback')
157 self.assertEqual(frames[0].line, 'raise RuntimeErrorSubclass(42)')
171 with self.subTest(type=type(stop_exc)):
176 self.assertIs(e, stop_exc)
179 self.fail(f'{stop_exc} was suppressed')
181 self.assertEqual(len(frames), 1)
182 self.assertEqual(frames[0].name, 'test_contextmanager_traceback')
183 self.assertEqual(frames[0].line, 'raise stop_exc')
186 async def test_contextmanager_no_reraise(self):
193 self.assertFalse(await ctx.__aexit__(TypeError, TypeError("foo"), None))
196 async def test_contextmanager_trap_yield_after_throw(self):
205 with self.assertRaises(RuntimeError):
209 async def test_contextmanager_trap_no_yield(self):
215 with self.assertRaises(RuntimeError):
219 async def test_contextmanager_trap_second_yield(self):
226 with self.assertRaises(RuntimeError):
230 async def test_contextmanager_non_normalised(self):
240 with self.assertRaises(SyntaxError):
244 async def test_contextmanager_except(self):
253 self.assertEqual(state, [1, 42, 999])
255 self.assertEqual(state, [1])
256 self.assertEqual(x, 42)
259 self.assertEqual(state, [1, 42, 999])
262 async def test_contextmanager_except_stopiter(self):
279 with self.subTest(type=type(stop_exc)):
284 self.assertIs(ex, stop_exc)
286 self.fail(f'{stop_exc} was suppressed')
289 async def test_contextmanager_wrap_runtimeerror(self):
297 with self.assertRaises(RuntimeError):
304 with self.assertRaises(StopAsyncIteration):
308 def _create_contextmanager_attribs(self):
322 def test_contextmanager_attribs(self):
323 baz = self._create_contextmanager_attribs()
324 self.assertEqual(baz.__name__,'baz')
325 self.assertEqual(baz.foo, 'bar')
328 def test_contextmanager_doc_attrib(self):
329 baz = self._create_contextmanager_attribs()
330 self.assertEqual(baz.__doc__, "Whee!")
334 async def test_instance_docstring_given_cm_docstring(self):
335 baz = self._create_contextmanager_attribs()(None)
336 self.assertEqual(baz.__doc__, "Whee!")
341 async def test_keywords(self):
344 async def woohoo(self, func, args, kwds):
345 yield (self, func, args, kwds)
346 async with woohoo(self=11, func=22, args=33, kwds=44) as target:
347 self.assertEqual(target, (11, 22, 33, 44))
350 async def test_recursive(self):
364 self.assertEqual(depth, before)
373 self.assertEqual(ncols, 10)
374 self.assertEqual(depth, 0)
377 async def test_decorator(self):
389 self.assertTrue(entered)
391 self.assertFalse(entered)
393 self.assertFalse(entered)
396 async def test_decorator_with_exception(self):
410 self.assertTrue(entered)
413 self.assertFalse(entered)
414 with self.assertRaisesRegex(NameError, 'foo'):
416 self.assertFalse(entered)
419 async def test_decorating_method(self):
429 async def method(self, a, b, c=None):
430 self.a = a
431 self.b = b
432 self.c = c
437 self.assertEqual(test.a, 1)
438 self.assertEqual(test.b, 2)
439 self.assertEqual(test.c, None)
443 self.assertEqual(test.a, 'a')
444 self.assertEqual(test.b, 'b')
445 self.assertEqual(test.c, 'c')
449 self.assertEqual(test.a, 1)
450 self.assertEqual(test.b, 2)
456 def test_instance_docs(self):
459 self.assertEqual(obj.__doc__, cm_docstring)
462 async def test_aclosing(self):
465 async def aclose(self):
468 self.assertEqual(state, [])
470 self.assertEqual(x, y)
471 self.assertEqual(state, [1])
474 async def test_aclosing_error(self):
477 async def aclose(self):
480 self.assertEqual(state, [])
481 with self.assertRaises(ZeroDivisionError):
483 self.assertEqual(x, y)
485 self.assertEqual(state, [1])
488 async def test_aclosing_bpo41229(self):
504 self.assertEqual(state, [])
505 with self.assertRaises(ZeroDivisionError):
507 self.assertEqual(x, y)
508 self.assertEqual(-1, await x.__anext__())
510 self.assertEqual(state, [1])
534 def close(self):
535 return self.run_coroutine(self.aclose())
537 def __enter__(self):
538 return self.run_coroutine(self.__aenter__())
540 def __exit__(self, *exc_details):
541 return self.run_coroutine(self.__aexit__(*exc_details))
545 ('__exit__', 'return self.run_coroutine(self.__aexit__(*exc_details))'),
552 def setUp(self):
553 self.loop = asyncio.new_event_loop()
554 asyncio.set_event_loop(self.loop)
555 self.addCleanup(self.loop.close)
556 self.addCleanup(asyncio.set_event_loop_policy, None)
559 async def test_async_callback(self):
583 self.assertIs(f, _exit)
585 self.assertIs(wrapper[1].__wrapped__, _exit)
586 self.assertNotEqual(wrapper[1].__name__, _exit.__name__)
587 self.assertIsNone(wrapper[1].__doc__, _exit.__doc__)
589 self.assertEqual(result, expected)
593 with self.assertRaises(TypeError):
595 with self.assertRaises(TypeError):
596 self.exit_stack.push_async_callback(arg=2)
597 with self.assertRaises(TypeError):
599 self.assertEqual(result, [])
602 async def test_async_push(self):
605 self.assertIs(exc_type, exc_raised)
609 self.assertIsNone(exc_type)
610 self.assertIsNone(exc)
611 self.assertIsNone(exc_tb)
613 def __init__(self, check_exc):
614 self.check_exc = check_exc
615 async def __aenter__(self):
616 self.fail("Should not be called!")
617 async def __aexit__(self, *exc_details):
618 await self.check_exc(*exc_details)
620 async with self.exit_stack() as stack:
622 self.assertIs(stack._exit_callbacks[-1][1], _expect_ok)
625 self.assertIs(stack._exit_callbacks[-1][1].__self__, cm)
627 self.assertIs(stack._exit_callbacks[-1][1], _suppress_exc)
630 self.assertIs(stack._exit_callbacks[-1][1].__self__, cm)
632 self.assertIs(stack._exit_callbacks[-1][1], _expect_exc)
634 self.assertIs(stack._exit_callbacks[-1][1], _expect_exc)
638 async def test_enter_async_context(self):
640 async def __aenter__(self):
642 async def __aexit__(self, *exc_details):
652 self.assertIsNotNone(_exit)
654 self.assertIs(stack._exit_callbacks[-1][1].__self__, cm)
657 self.assertEqual(result, [1, 2, 3, 4])
660 async def test_enter_async_context_errors(self):
664 async def __aexit__(self, *exc_info):
667 async def __aenter__(self):
670 async with self.exit_stack() as stack:
671 with self.assertRaisesRegex(TypeError, 'asynchronous context manager'):
673 with self.assertRaisesRegex(TypeError, 'asynchronous context manager'):
675 with self.assertRaisesRegex(TypeError, 'asynchronous context manager'):
677 self.assertFalse(stack._exit_callbacks)
680 async def test_async_exit_exception_chaining(self):
692 async with self.exit_stack() as stack:
700 self.assertIsInstance(exc.__context__, KeyError)
701 self.assertIsInstance(exc.__context__.__context__, AttributeError)
703 self.assertIsNone(exc.__context__.__context__.__context__)
705 self.fail("Expected IndexError, but no exception was raised")
708 self.assertIsInstance(inner_exc, ValueError)
709 self.assertIsInstance(inner_exc.__context__, ZeroDivisionError)
712 async def test_async_exit_exception_explicit_none_context(self):
732 async with self.exit_stack() as stack:
737 with self.subTest():
742 self.assertIsNone(exc.__context__)
744 self.fail("Expected IndexError, but no exception was raised")
747 async def test_instance_bypass_async(self):
752 stack = self.exit_stack()
753 with self.assertRaisesRegex(TypeError, 'asynchronous context manager'):
756 self.assertIs(stack._exit_callbacks[-1][1], cm)
761 async def test_async_nullcontext(self):
766 self.assertIs(c_in, c)