mirror of
https://github.com/Comfy-Org/ComfyUI.git
synced 2026-08-25 18:32:35 +08:00
test(isolation): process boundary coverage and workflows
This commit is contained in:
78
tests/isolation/test_singleton_proxy_boundary_matrix.py
Normal file
78
tests/isolation/test_singleton_proxy_boundary_matrix.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
from tests.isolation.singleton_boundary_helpers import (
|
||||
capture_minimal_sealed_worker_imports,
|
||||
capture_sealed_singleton_imports,
|
||||
)
|
||||
|
||||
|
||||
def test_minimal_sealed_worker_forbidden_imports() -> None:
|
||||
payload = capture_minimal_sealed_worker_imports()
|
||||
|
||||
assert payload["mode"] == "minimal_sealed_worker"
|
||||
assert payload["runtime_probe_function"] == "inspect"
|
||||
assert payload["forbidden_matches"] == []
|
||||
|
||||
|
||||
def test_torch_share_subset_scope() -> None:
|
||||
minimal = capture_minimal_sealed_worker_imports()
|
||||
|
||||
allowed_torch_share_only = {
|
||||
"torch",
|
||||
"folder_paths",
|
||||
"comfy.utils",
|
||||
"comfy.model_management",
|
||||
"main",
|
||||
"comfy.isolation.extension_wrapper",
|
||||
}
|
||||
|
||||
assert minimal["forbidden_matches"] == []
|
||||
assert all(
|
||||
module_name not in minimal["modules"] for module_name in sorted(allowed_torch_share_only)
|
||||
)
|
||||
|
||||
|
||||
def test_capture_payload_is_json_serializable() -> None:
|
||||
payload = capture_minimal_sealed_worker_imports()
|
||||
|
||||
encoded = json.dumps(payload, sort_keys=True)
|
||||
|
||||
assert "\"minimal_sealed_worker\"" in encoded
|
||||
|
||||
|
||||
def test_folder_paths_child_safe() -> None:
|
||||
payload = capture_sealed_singleton_imports()
|
||||
|
||||
assert payload["mode"] == "sealed_singletons"
|
||||
assert payload["folder_path"] == "/sandbox/input/demo.png"
|
||||
assert payload["temp_dir"] == "/sandbox/temp"
|
||||
assert payload["models_dir"] == "/sandbox/models"
|
||||
assert payload["forbidden_matches"] == []
|
||||
|
||||
|
||||
def test_utils_child_safe() -> None:
|
||||
payload = capture_sealed_singleton_imports()
|
||||
|
||||
progress_calls = [
|
||||
call
|
||||
for call in payload["rpc_calls"]
|
||||
if call["object_id"] == "UtilsProxy" and call["method"] == "progress_bar_hook"
|
||||
]
|
||||
|
||||
assert progress_calls
|
||||
assert payload["forbidden_matches"] == []
|
||||
|
||||
|
||||
def test_progress_child_safe() -> None:
|
||||
payload = capture_sealed_singleton_imports()
|
||||
|
||||
progress_calls = [
|
||||
call
|
||||
for call in payload["rpc_calls"]
|
||||
if call["object_id"] == "ProgressProxy" and call["method"] == "rpc_set_progress"
|
||||
]
|
||||
|
||||
assert progress_calls
|
||||
assert payload["forbidden_matches"] == []
|
||||
Reference in New Issue
Block a user