* refactor: remove dead and test-only code and the write-only prompt registry (#620) Removes helpers nothing calls, test-only wrappers and their tests, the unused config writer, three unused images, and the prompt registry the nodes wrote to but nothing read, which grew with every run. * fix: network-share readers, model unload off the loop, bad save requests (#620) Every read-only SQLite open now uses one URI helper, so a library on a Windows network share works in backups, restores, moves and history reads. Unloading a model no longer blocks the server. A malformed /save body gets a 400, not a 500. * feat(library): add Recently used, Most used and Name Z-A sorting (#620) The old Dashboard's sorts the community asked for, on the Prompt library, in saved views, and with paging through the whole list. * feat(workspace): stop linking the old pages (#620) They show a removal notice since 3.5.1. System no longer links them, the load failure offers a reload and ComfyUI instead, and the README says they are going away. The pages still work at their URLs.
54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
"""Split changes presentation while inheriting Focused execution and storage."""
|
|
|
|
import logging
|
|
import unittest
|
|
import unittest.mock
|
|
|
|
from prompt_manager import PromptManagerFocused, PromptManagerSplit
|
|
|
|
|
|
class TestSplitNode(unittest.TestCase):
|
|
def test_split_preserves_focused_schema_encoding_and_change_detection(self):
|
|
self.assertTrue(issubclass(PromptManagerSplit, PromptManagerFocused))
|
|
self.assertEqual(
|
|
PromptManagerSplit.INPUT_TYPES(), PromptManagerFocused.INPUT_TYPES()
|
|
)
|
|
self.assertEqual(
|
|
PromptManagerSplit.RETURN_TYPES, PromptManagerFocused.RETURN_TYPES
|
|
)
|
|
self.assertEqual(PromptManagerSplit.FUNCTION, PromptManagerFocused.FUNCTION)
|
|
self.assertIs(
|
|
PromptManagerSplit.encode_prompt, PromptManagerFocused.encode_prompt
|
|
)
|
|
self.assertEqual(
|
|
PromptManagerSplit.IS_CHANGED(None, "cat", category="Animals"),
|
|
PromptManagerFocused.IS_CHANGED(None, "cat", category="Animals"),
|
|
)
|
|
|
|
def test_split_encodes_composition_and_persists_main_text_with_metadata(self):
|
|
node = PromptManagerSplit.__new__(PromptManagerSplit)
|
|
node.logger = logging.getLogger("test.split")
|
|
node._inject_lora_trigger_words = lambda text: text
|
|
node._track_prompt_execution = unittest.mock.Mock(return_value=42)
|
|
clip = unittest.mock.Mock()
|
|
graph = {"1": {"class_type": "PromptManagerSplit", "inputs": {"text": "cat"}}}
|
|
conditioning, text = node.encode_prompt(
|
|
clip,
|
|
"cat",
|
|
category="Animals",
|
|
tags="studio",
|
|
prepend_text="trigger",
|
|
append_text="detailed",
|
|
prompt=graph,
|
|
unique_id="1",
|
|
)
|
|
self.assertEqual(text, "trigger cat detailed")
|
|
clip.tokenize.assert_called_once_with(text)
|
|
self.assertIs(conditioning, clip.encode_from_tokens_scheduled.return_value)
|
|
tracked = node._track_prompt_execution.call_args.kwargs
|
|
self.assertEqual(tracked["text"], "cat")
|
|
self.assertEqual(tracked["category"], "Animals")
|
|
self.assertIn("studio", tracked["tags"])
|
|
self.assertEqual(tracked["prompt_graph"], graph)
|
|
self.assertEqual(tracked["unique_id"], "1")
|