14
14
15
15
import pytest
16
16
from aiohappyeyeballs import AddrInfoType
17
+ from pytest_mock import MockerFixture
17
18
from yarl import URL
18
19
19
20
import aiohttp
@@ -359,6 +360,7 @@ async def test_get_expired(loop: asyncio.AbstractEventLoop) -> None:
359
360
await conn .close ()
360
361
361
362
363
+ @pytest .mark .usefixtures ("enable_cleanup_closed" )
362
364
async def test_get_expired_ssl (loop : asyncio .AbstractEventLoop ) -> None :
363
365
conn = aiohttp .BaseConnector (enable_cleanup_closed = True )
364
366
key = ConnectionKey ("localhost" , 80 , True , False , None , None , None )
@@ -425,9 +427,16 @@ async def test_release(loop, key) -> None:
425
427
await conn .close ()
426
428
427
429
428
- async def test_release_ssl_transport (loop , ssl_key ) -> None :
429
- conn = aiohttp .BaseConnector (loop = loop , enable_cleanup_closed = True )
430
- conn ._release_waiter = mock .Mock ()
430
+ @pytest .mark .usefixtures ("enable_cleanup_closed" )
431
+ async def test_release_ssl_transport (
432
+ loop : asyncio .AbstractEventLoop , ssl_key : ConnectionKey
433
+ ) -> None :
434
+ conn = aiohttp .BaseConnector (enable_cleanup_closed = True )
435
+ with mock .patch .object (conn , "_release_waiter" , autospec = True , spec_set = True ):
436
+ proto = create_mocked_conn (loop )
437
+ transport = proto .transport
438
+ conn ._acquired .add (proto )
439
+ conn ._acquired_per_host [ssl_key ].add (proto )
431
440
432
441
proto = mock .Mock ()
433
442
transport = proto .transport
@@ -1682,6 +1691,7 @@ async def test_close_during_connect(loop: asyncio.AbstractEventLoop) -> None:
1682
1691
assert proto .close .called
1683
1692
1684
1693
1694
+ @pytest .mark .usefixtures ("enable_cleanup_closed" )
1685
1695
async def test_ctor_cleanup () -> None :
1686
1696
loop = mock .Mock ()
1687
1697
loop .time .return_value = 1.5
@@ -1712,8 +1722,11 @@ async def test_cleanup(key) -> None:
1712
1722
assert conn ._cleanup_handle is None
1713
1723
1714
1724
1715
- async def test_cleanup_close_ssl_transport (ssl_key ) -> None :
1716
- proto = mock .Mock ()
1725
+ @pytest .mark .usefixtures ("enable_cleanup_closed" )
1726
+ async def test_cleanup_close_ssl_transport (
1727
+ loop : asyncio .AbstractEventLoop , ssl_key : ConnectionKey
1728
+ ) -> None :
1729
+ proto = create_mocked_conn (loop )
1717
1730
transport = proto .transport
1718
1731
testset = {ssl_key : [(proto , 10 )]}
1719
1732
@@ -1769,7 +1782,10 @@ async def test_cleanup3(key) -> None:
1769
1782
await conn .close ()
1770
1783
1771
1784
1772
- async def test_cleanup_closed (loop , mocker ) -> None :
1785
+ @pytest .mark .usefixtures ("enable_cleanup_closed" )
1786
+ async def test_cleanup_closed (
1787
+ loop : asyncio .AbstractEventLoop , mocker : MockerFixture
1788
+ ) -> None :
1773
1789
if not hasattr (loop , "__dict__" ):
1774
1790
pytest .skip ("can not override loop attributes" )
1775
1791
@@ -1786,8 +1802,19 @@ async def test_cleanup_closed(loop, mocker) -> None:
1786
1802
assert cleanup_closed_handle .cancel .called
1787
1803
1788
1804
1789
- async def test_cleanup_closed_disabled (loop , mocker ) -> None :
1790
- conn = aiohttp .BaseConnector (loop = loop , enable_cleanup_closed = False )
1805
+ async def test_cleanup_closed_is_noop_on_fixed_cpython () -> None :
1806
+ """Ensure that enable_cleanup_closed is a noop on fixed Python versions."""
1807
+ with mock .patch ("aiohttp.connector.NEEDS_CLEANUP_CLOSED" , False ), pytest .warns (
1808
+ DeprecationWarning , match = "cleanup_closed ignored"
1809
+ ):
1810
+ conn = aiohttp .BaseConnector (enable_cleanup_closed = True )
1811
+ assert conn ._cleanup_closed_disabled is True
1812
+
1813
+
1814
+ async def test_cleanup_closed_disabled (
1815
+ loop : asyncio .AbstractEventLoop , mocker : MockerFixture
1816
+ ) -> None :
1817
+ conn = aiohttp .BaseConnector (enable_cleanup_closed = False )
1791
1818
1792
1819
tr = mock .Mock ()
1793
1820
conn ._cleanup_closed_transports = [tr ]
@@ -2293,8 +2320,11 @@ async def test_close_abort_closed_transports(loop: asyncio.AbstractEventLoop) ->
2293
2320
assert conn .closed
2294
2321
2295
2322
2296
- async def test_close_cancels_cleanup_closed_handle (loop ) -> None :
2297
- conn = aiohttp .BaseConnector (loop = loop , enable_cleanup_closed = True )
2323
+ @pytest .mark .usefixtures ("enable_cleanup_closed" )
2324
+ async def test_close_cancels_cleanup_closed_handle (
2325
+ loop : asyncio .AbstractEventLoop ,
2326
+ ) -> None :
2327
+ conn = aiohttp .BaseConnector (enable_cleanup_closed = True )
2298
2328
assert conn ._cleanup_closed_handle is not None
2299
2329
await conn .close ()
2300
2330
assert conn ._cleanup_closed_handle is None
0 commit comments