Files
A043-studios-ComfyUI_Hunyua…/tests/test_basic.py
T
2025-08-02 17:50:32 +02:00

114 lines
4.2 KiB
Python

#!/usr/bin/env python3
"""
Basic tests for ComfyUI-HunyuanWorld
"""
import pytest
import sys
import os
# Add the parent directory to the path so we can import the module
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def test_import():
"""Test that the module can be imported"""
try:
import __init__
assert True
except ImportError as e:
pytest.fail(f"Failed to import module: {e}")
def test_node_mappings():
"""Test that node mappings are properly defined"""
import __init__
# Check that NODE_CLASS_MAPPINGS exists and is not empty
assert hasattr(__init__, 'NODE_CLASS_MAPPINGS')
assert isinstance(__init__.NODE_CLASS_MAPPINGS, dict)
assert len(__init__.NODE_CLASS_MAPPINGS) > 0
# Check that NODE_DISPLAY_NAME_MAPPINGS exists
assert hasattr(__init__, 'NODE_DISPLAY_NAME_MAPPINGS')
assert isinstance(__init__.NODE_DISPLAY_NAME_MAPPINGS, dict)
def test_node_classes():
"""Test that node classes have required methods"""
import __init__
for node_name, node_class in __init__.NODE_CLASS_MAPPINGS.items():
# Check that the class has INPUT_TYPES method
assert hasattr(node_class, 'INPUT_TYPES'), f"{node_name} missing INPUT_TYPES"
assert callable(getattr(node_class, 'INPUT_TYPES')), f"{node_name} INPUT_TYPES not callable"
# Check that the class has RETURN_TYPES
assert hasattr(node_class, 'RETURN_TYPES'), f"{node_name} missing RETURN_TYPES"
# Check that the class has FUNCTION
assert hasattr(node_class, 'FUNCTION'), f"{node_name} missing FUNCTION"
# Check that the class has CATEGORY
assert hasattr(node_class, 'CATEGORY'), f"{node_name} missing CATEGORY"
def test_input_types_format():
"""Test that INPUT_TYPES returns proper format"""
import __init__
for node_name, node_class in __init__.NODE_CLASS_MAPPINGS.items():
input_types = node_class.INPUT_TYPES()
# Should return a dictionary
assert isinstance(input_types, dict), f"{node_name} INPUT_TYPES should return dict"
# Should have 'required' key
assert 'required' in input_types, f"{node_name} INPUT_TYPES missing 'required' key"
# 'required' should be a dictionary
assert isinstance(input_types['required'], dict), f"{node_name} 'required' should be dict"
def test_graceful_degradation():
"""Test that nodes work even without optional dependencies"""
import __init__
# The module should import successfully even if optional dependencies are missing
# This is tested by the import test above, but we can add more specific checks here
# Check that HUNYUAN3D_AVAILABLE flag exists
assert hasattr(__init__, 'HUNYUAN3D_AVAILABLE')
assert isinstance(__init__.HUNYUAN3D_AVAILABLE, bool)
# Check that TRIMESH_AVAILABLE flag exists
assert hasattr(__init__, 'TRIMESH_AVAILABLE')
assert isinstance(__init__.TRIMESH_AVAILABLE, bool)
# Check that PIL_AVAILABLE flag exists
assert hasattr(__init__, 'PIL_AVAILABLE')
assert isinstance(__init__.PIL_AVAILABLE, bool)
def test_node_instantiation():
"""Test that nodes can be instantiated"""
import __init__
for node_name, node_class in __init__.NODE_CLASS_MAPPINGS.items():
try:
# Try to instantiate the node
node_instance = node_class()
assert node_instance is not None, f"Failed to instantiate {node_name}"
except Exception as e:
pytest.fail(f"Failed to instantiate {node_name}: {e}")
def test_display_names():
"""Test that display names are properly mapped"""
import __init__
# All nodes should have display names
for node_name in __init__.NODE_CLASS_MAPPINGS.keys():
assert node_name in __init__.NODE_DISPLAY_NAME_MAPPINGS, f"Missing display name for {node_name}"
# Display names should be strings
display_name = __init__.NODE_DISPLAY_NAME_MAPPINGS[node_name]
assert isinstance(display_name, str), f"Display name for {node_name} should be string"
assert len(display_name) > 0, f"Display name for {node_name} should not be empty"
if __name__ == "__main__":
pytest.main([__file__])