Skip to content

Commit 3699bef

Browse files
committed
Add comprehensive tests for ReAwaitable
1 parent da67d3e commit 3699bef

File tree

1 file changed

+47
-4
lines changed

1 file changed

+47
-4
lines changed
Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import anyio
22
import pytest
33

4-
from returns.primitives.reawaitable import ReAwaitable
4+
from returns.primitives.reawaitable import ReAwaitable, reawaitable
55

66

77
async def sample_coro():
@@ -11,11 +11,54 @@ async def sample_coro():
1111

1212
@pytest.mark.anyio
1313
async def test_concurrent_awaitable():
14-
reawaitable = ReAwaitable(sample_coro())
14+
test_target = ReAwaitable(sample_coro())
1515

1616
async def await_reawaitable():
17-
return await reawaitable
18-
17+
return await test_target
1918
async with anyio.create_task_group() as tg:
2019
task1 = tg.start_soon(await_reawaitable)
2120
task2 = tg.start_soon(await_reawaitable)
21+
22+
23+
@pytest.mark.anyio
24+
async def test_reawaitable_decorator():
25+
"""Test the reawaitable decorator with concurrent awaits."""
26+
27+
@reawaitable
28+
async def decorated_coro():
29+
await anyio.sleep(0.1)
30+
return "decorated"
31+
32+
instance = decorated_coro()
33+
34+
# Test multiple awaits
35+
result1 = await instance
36+
result2 = await instance
37+
38+
assert result1 == "decorated"
39+
assert result1 == result2
40+
41+
# Test concurrent awaits
42+
async def await_decorated():
43+
return await instance
44+
45+
async with anyio.create_task_group() as tg:
46+
task1 = tg.start_soon(await_decorated)
47+
task2 = tg.start_soon(await_decorated)
48+
49+
50+
@pytest.mark.anyio
51+
async def test_reawaitable_repr():
52+
"""Test the __repr__ method of ReAwaitable."""
53+
54+
async def test_func():
55+
return 1
56+
57+
coro = test_func()
58+
reawaitable = ReAwaitable(coro)
59+
60+
# Test the representation
61+
assert repr(reawaitable) == repr(coro)
62+
63+
# Ensure the coroutine is properly awaited
64+
await reawaitable

0 commit comments

Comments
 (0)