Spaces:
Build error
Build error
import httpx | |
from openhands.utils.ensure_httpx_close import ensure_httpx_close | |
def test_ensure_httpx_close_basic(): | |
"""Test basic functionality of ensure_httpx_close.""" | |
ctx = ensure_httpx_close() | |
with ctx: | |
# Create a client - should be tracked | |
client = httpx.Client() | |
# After context exit, client should be closed | |
assert client.is_closed | |
def test_ensure_httpx_close_multiple_clients(): | |
"""Test ensure_httpx_close with multiple clients.""" | |
ctx = ensure_httpx_close() | |
with ctx: | |
client1 = httpx.Client() | |
client2 = httpx.Client() | |
assert client1.is_closed | |
assert client2.is_closed | |
def test_ensure_httpx_close_nested(): | |
"""Test nested usage of ensure_httpx_close.""" | |
with ensure_httpx_close(): | |
client1 = httpx.Client() | |
with ensure_httpx_close(): | |
client2 = httpx.Client() | |
assert not client2.is_closed | |
# After inner context, client2 should be closed | |
assert client2.is_closed | |
# client1 should still be open since outer context is still active | |
assert not client1.is_closed | |
# After outer context, both clients should be closed | |
assert client1.is_closed | |
assert client2.is_closed | |
def test_ensure_httpx_close_exception(): | |
"""Test ensure_httpx_close when an exception occurs.""" | |
client = None | |
try: | |
with ensure_httpx_close(): | |
client = httpx.Client() | |
raise ValueError('Test exception') | |
except ValueError: | |
pass | |
# Client should be closed even if an exception occurred | |
assert client is not None | |
assert client.is_closed | |
def test_ensure_httpx_close_restore_client(): | |
"""Test that the original client is restored after context exit.""" | |
original_client = httpx.Client | |
with ensure_httpx_close(): | |
assert httpx.Client != original_client | |
# Original __init__ should be restored | |
assert httpx.Client == original_client | |