mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 13:52:43 +08:00
70 lines
1.9 KiB
Python
70 lines
1.9 KiB
Python
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
|