Fail closed on definition references and sticky mappings
This commit is contained in:
@@ -1169,6 +1169,52 @@ NODE_CLASS_MAPPINGS = {
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_input_types_default_referencing_return_types_skips_node(self):
|
||||
source = '''
|
||||
class DefaultReferencesReturnTypesInputNode:
|
||||
RETURN_TYPES = ("IMAGE",)
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls, value=RETURN_TYPES):
|
||||
return {
|
||||
"required": {
|
||||
"image": ("IMAGE",),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"DefaultReferencesReturnTypesInputNode": DefaultReferencesReturnTypesInputNode,
|
||||
}
|
||||
'''
|
||||
result = self._extract_source(source, "default-references-return-types-input-pack")
|
||||
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_input_types_return_annotation_referencing_input_types_skips_node(self):
|
||||
source = '''
|
||||
class AnnotationReferencesInputTypesNode:
|
||||
RETURN_TYPES = ("IMAGE",)
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls) -> INPUT_TYPES:
|
||||
return {
|
||||
"required": {
|
||||
"image": ("IMAGE",),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"AnnotationReferencesInputTypesNode": AnnotationReferencesInputTypesNode,
|
||||
}
|
||||
'''
|
||||
result = self._extract_source(source, "annotation-references-input-types-pack")
|
||||
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_decorated_input_types_skips_node(self):
|
||||
source = '''
|
||||
def replace(fn):
|
||||
@@ -2163,6 +2209,37 @@ NODE_CLASS_MAPPINGS = build_mappings()
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_dynamic_node_class_mapping_assignment_stays_invalid_after_static_reassignment(self):
|
||||
source = '''
|
||||
def build_mappings():
|
||||
return {"StickyDynamicMappingNode": StickyDynamicMappingNode}
|
||||
|
||||
|
||||
class StickyDynamicMappingNode:
|
||||
RETURN_TYPES = ("IMAGE",)
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"image": ("IMAGE",),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"StickyDynamicMappingNode": StickyDynamicMappingNode,
|
||||
}
|
||||
NODE_CLASS_MAPPINGS = build_mappings()
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"StickyDynamicMappingNode": StickyDynamicMappingNode,
|
||||
}
|
||||
'''
|
||||
result = self._extract_source(source, "sticky-dynamic-mapping-pack")
|
||||
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_rebound_node_class_name_skips_static_mapping(self):
|
||||
source = '''
|
||||
def build_node():
|
||||
@@ -3719,6 +3796,40 @@ NODE_DISPLAY_NAME_MAPPINGS = build_displays()
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_dynamic_display_mapping_assignment_stays_invalid_after_static_reassignment(self):
|
||||
source = '''
|
||||
def build_displays():
|
||||
return {"StickyDisplayInvalidatedNode": "Dynamic Display"}
|
||||
|
||||
|
||||
class StickyDisplayInvalidatedNode:
|
||||
RETURN_TYPES = ("IMAGE",)
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"image": ("IMAGE",),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"StickyDisplayInvalidatedNode": StickyDisplayInvalidatedNode,
|
||||
}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"StickyDisplayInvalidatedNode": "Stale Display",
|
||||
}
|
||||
NODE_DISPLAY_NAME_MAPPINGS = build_displays()
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"StickyDisplayInvalidatedNode": "Recovered Display",
|
||||
}
|
||||
'''
|
||||
result = self._extract_source(source, "sticky-display-invalidated-pack")
|
||||
|
||||
self.assertEqual({}, result["nodes"])
|
||||
self.assertEqual("no_static_nodes", result["pack"]["status"])
|
||||
|
||||
def test_non_string_display_mapping_value_skips_node(self):
|
||||
source = '''
|
||||
class NonStringDisplayValueNode:
|
||||
|
||||
Reference in New Issue
Block a user