mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-24 14:42:11 -03:00
fix(settings): dispatch name display updates on original loop
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import asyncio
|
||||
import copy
|
||||
import threading
|
||||
import json
|
||||
import os
|
||||
|
||||
@@ -110,15 +112,30 @@ def test_model_name_display_setting_notifies_scanners(tmp_path, monkeypatch):
|
||||
|
||||
manager = _create_manager_with_settings(tmp_path, monkeypatch, initial)
|
||||
|
||||
loop = asyncio.new_event_loop()
|
||||
thread = threading.Thread(target=loop.run_forever, daemon=True)
|
||||
thread.start()
|
||||
|
||||
class DummyScanner:
|
||||
def __init__(self):
|
||||
self.calls = []
|
||||
self.loop = loop
|
||||
|
||||
async def on_model_name_display_changed(self, mode: str) -> None:
|
||||
self.calls.append(mode)
|
||||
|
||||
dummy_scanner = DummyScanner()
|
||||
|
||||
dispatched_loops = []
|
||||
futures = []
|
||||
original_run_coroutine_threadsafe = asyncio.run_coroutine_threadsafe
|
||||
|
||||
def tracking_run_coroutine_threadsafe(coro, target_loop):
|
||||
dispatched_loops.append(target_loop)
|
||||
future = original_run_coroutine_threadsafe(coro, target_loop)
|
||||
futures.append(future)
|
||||
return future
|
||||
|
||||
def fake_get_service_sync(cls, name):
|
||||
return dummy_scanner if name == "lora_scanner" else None
|
||||
|
||||
@@ -127,10 +144,20 @@ def test_model_name_display_setting_notifies_scanners(tmp_path, monkeypatch):
|
||||
"get_service_sync",
|
||||
classmethod(fake_get_service_sync),
|
||||
)
|
||||
monkeypatch.setattr(asyncio, "run_coroutine_threadsafe", tracking_run_coroutine_threadsafe)
|
||||
|
||||
manager.set("model_name_display", "file_name")
|
||||
try:
|
||||
manager.set("model_name_display", "file_name")
|
||||
|
||||
assert dummy_scanner.calls == ["file_name"]
|
||||
for future in futures:
|
||||
future.result(timeout=1)
|
||||
|
||||
assert dummy_scanner.calls == ["file_name"]
|
||||
assert dispatched_loops == [dummy_scanner.loop]
|
||||
finally:
|
||||
loop.call_soon_threadsafe(loop.stop)
|
||||
thread.join(timeout=1)
|
||||
loop.close()
|
||||
|
||||
|
||||
def test_migrates_legacy_settings_file(tmp_path, monkeypatch):
|
||||
|
||||
Reference in New Issue
Block a user