mirror of
https://github.com/hanzoui/pyisolate.git
synced 2026-10-30 20:37:17 +00:00
Drop Python 3.9, add bubblewrap to workflows, apply ruff formatting. Was running `ruff` and not the additional `ruff-format`. Installed pre-commit hooks to prevent any future non-compliant commits.
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
import pytest
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_extension_lifecycle(reference_host):
|
|
"""
|
|
Verifies:
|
|
1. Extension can actally accept a connection.
|
|
2. 'ping' RPC returns expected value.
|
|
3. Extension initializes correctly.
|
|
"""
|
|
ext = reference_host.load_test_extension("lifecycle_test", isolated=True)
|
|
|
|
# 1. Ping
|
|
proxy = ext.get_proxy()
|
|
response = await proxy.ping()
|
|
assert response == "pong"
|
|
|
|
# 2. Check environment
|
|
# PYISOLATE_CHILD should be "1" in the child process
|
|
child_env = await proxy.get_env_var("PYISOLATE_CHILD")
|
|
assert child_env == "1"
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_non_isolated_lifecycle(reference_host):
|
|
"""
|
|
Verifies standard mode (host-loaded) works with same API.
|
|
"""
|
|
# Note: ReferenceHost.load_test_extension creates an Extension object which
|
|
# uses pyisolate's Extension class. For non-isolated, we need to ensure local
|
|
# execution path works if intended, BUT pyisolate's Extension class primarily
|
|
# facilitates the isolated path.
|
|
# If we pass isolated=False, we might need to check if ReferenceHost/Extension
|
|
# handles that logic (using pyisolate.host.Extension logic).
|
|
|
|
# In pyisolate.host.Extension usually assumes launching via _initialize_process.
|
|
# If standard mode is just loading mocking, we might not test it here.
|
|
# But let's test isolated=True with share_torch=False
|
|
|
|
ext = reference_host.load_test_extension("no_torch_share", isolated=True, share_torch=False)
|
|
proxy = ext.get_proxy()
|
|
assert await proxy.ping() == "pong"
|