MagicNodes / tests /test_smartseed_outputs.py
PBandDev
Expose SmartSeed selected seed outputs (#17)
4a02569 unverified
Raw
History Blame
2.69 kB
import ast
from pathlib import Path
import unittest
ROOT = Path(__file__).resolve().parents[1]
def _module_tree(relative_path: str) -> ast.Module:
return ast.parse((ROOT / relative_path).read_text(encoding="utf-8"))
def _class_node(tree: ast.Module, class_name: str) -> ast.ClassDef:
for node in tree.body:
if isinstance(node, ast.ClassDef) and node.name == class_name:
return node
raise AssertionError(f"class {class_name} not found")
def _assigned_tuple(class_node: ast.ClassDef, name: str) -> tuple[str, ...]:
for node in class_node.body:
if (
isinstance(node, ast.Assign)
and any(isinstance(target, ast.Name) and target.id == name for target in node.targets)
and isinstance(node.value, ast.Tuple)
):
return tuple(
item.value
for item in node.value.elts
if isinstance(item, ast.Constant) and isinstance(item.value, str)
)
raise AssertionError(f"{name} tuple not found on {class_node.name}")
class SmartSeedOutputTests(unittest.TestCase):
def test_easy_cade_exposes_selected_seed_without_reordering_existing_outputs(self):
tree = _module_tree("mod/easy/mg_cade25_easy.py")
cade_easy = _class_node(tree, "CADEEasyUI")
self.assertEqual(
_assigned_tuple(cade_easy, "RETURN_NAMES"),
("LATENT", "IMAGE", "mask_preview", "selected_seed"),
)
self.assertEqual(
_assigned_tuple(cade_easy, "RETURN_TYPES"),
("LATENT", "IMAGE", "IMAGE", "INT"),
)
def test_base_cade_returns_selected_seed_for_advanced_wiring(self):
tree = _module_tree("mod/easy/mg_cade25_easy.py")
base_cade = _class_node(tree, "ComfyAdaptiveDetailEnhancer25")
self.assertEqual(
_assigned_tuple(base_cade, "RETURN_NAMES"),
("LATENT", "IMAGE", "steps", "cfg", "denoise", "mask_preview", "selected_seed"),
)
self.assertEqual(
_assigned_tuple(base_cade, "RETURN_TYPES"),
("LATENT", "IMAGE", "INT", "FLOAT", "FLOAT", "IMAGE", "INT"),
)
def test_supersimple_exposes_final_step_selected_seed(self):
tree = _module_tree("mod/easy/mg_supersimple_easy.py")
super_simple = _class_node(tree, "MG_SuperSimple")
self.assertEqual(
_assigned_tuple(super_simple, "RETURN_NAMES"),
("LATENT", "IMAGE", "selected_seed"),
)
self.assertEqual(
_assigned_tuple(super_simple, "RETURN_TYPES"),
("LATENT", "IMAGE", "INT"),
)
if __name__ == "__main__":
unittest.main()