mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-04-01 22:44:14 +08:00
79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
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"] == []
|