@@ -1480,27 +1480,29 @@ def test_async_global_awaited_by_skips_set_tombstones(self):
14801480 script_body = """\
14811481 import asyncio
14821482
1483- class RemovedTask(asyncio.Task):
1484- def __hash__(self):
1485- return 0
1483+ class HashedTask(asyncio.Task):
1484+ def __init__(self, coro, task_hash, **kwargs):
1485+ self.task_hash = task_hash
1486+ super().__init__(coro, **kwargs)
14861487
1487- class RemainingTask(asyncio.Task):
14881488 def __hash__(self):
1489- return 1
1490-
1491- async def wait_forever():
1492- await asyncio.Event().wait()
1489+ return self.task_hash
14931490
14941491 async def main():
1495- victim = asyncio.create_task(wait_forever(), name="victim")
1496- removed = RemovedTask(wait_forever(), name="removed")
1497- remaining = RemainingTask(wait_forever(), name="remaining")
1492+ victim = asyncio.create_task(
1493+ asyncio.sleep(10_000), name="victim"
1494+ )
1495+ removed = HashedTask(
1496+ asyncio.sleep(10_000), 0, name="removed"
1497+ )
1498+ remaining = HashedTask(
1499+ asyncio.sleep(10_000), 1, name="remaining"
1500+ )
14981501
14991502 asyncio.future_add_to_awaited_by(victim, removed)
15001503 asyncio.future_add_to_awaited_by(victim, remaining)
15011504
1502- # Put a dummy in slot 0 before the only active entry in
1503- # slot 1. It must not count toward the set's used entries.
1505+ # Removing hash 0 leaves a dummy before the live hash-1 entry.
15041506 asyncio.future_discard_from_awaited_by(victim, removed)
15051507
15061508 sock.sendall(b"ready")
0 commit comments