self.assertEqual(name, "example")
await t
+ def test_eager_start_true_no_loop(self):
+ # gh-154695: eager_start must use the resolved loop, not loop=None.
+ async def asyncfn():
+ return 42
+
+ async def main():
+ t = self.__class__.Task(asyncfn(), eager_start=True)
+ self.assertTrue(t.done())
+ self.assertEqual(await t, 42)
+
+ asyncio.run(main(), loop_factory=asyncio.EventLoop)
+
def test_eager_start_false(self):
name = None
_PyObject_SetMaybeWeakref((PyObject *)self);
#endif
if (eager_start) {
- PyObject *res = PyObject_CallMethodNoArgs(loop, &_Py_ID(is_running));
+ // gh-154695: loop may be None here, future_init() resolved it into task_loop.
+ PyObject *res = PyObject_CallMethodNoArgs(self->task_loop,
+ &_Py_ID(is_running));
if (res == NULL) {
return -1;
}