Files
ComfyUI/custom_nodes/ComfyUI-Impact-Pack/tests/test_error_handling.sh
jaidaken f09734b0ee
Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
Python Linting / Run Pylint (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.10, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.11, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.12, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-unix-nightly (12.1, , linux, 3.11, [self-hosted Linux], nightly) (push) Has been cancelled
Execution Tests / test (macos-latest) (push) Has been cancelled
Execution Tests / test (ubuntu-latest) (push) Has been cancelled
Execution Tests / test (windows-latest) (push) Has been cancelled
Test server launches without errors / test (push) Has been cancelled
Unit Tests / test (macos-latest) (push) Has been cancelled
Unit Tests / test (ubuntu-latest) (push) Has been cancelled
Unit Tests / test (windows-2022) (push) Has been cancelled
Add custom nodes, Civitai loras (LFS), and vast.ai setup script
Includes 30 custom nodes committed directly, 7 Civitai-exclusive
loras stored via Git LFS, and a setup script that installs all
dependencies and downloads HuggingFace-hosted models on vast.ai.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 00:56:42 +00:00

196 lines
5.4 KiB
Bash
Executable File

#!/bin/bash
# Error Handling Test Suite
# Tests graceful error handling for invalid wildcards, circular references, etc.
set -e
PORT=8197
COMFYUI_DIR="/mnt/teratera/git/ComfyUI"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
IMPACT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
CONFIG_FILE="$IMPACT_DIR/impact-pack.ini"
LOG_FILE="/tmp/error_handling_test.log"
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo "=========================================="
echo "Error Handling Test Suite"
echo "=========================================="
echo "Port: $PORT"
echo "Testing: Error handling and edge cases"
echo ""
# Cleanup function
cleanup() {
echo ""
echo "Cleaning up..."
pkill -f "python.*main.py.*--port $PORT" 2>/dev/null || true
rm -f "$CONFIG_FILE"
echo "Cleanup complete"
}
trap cleanup EXIT
# Kill any existing server on this port
echo "Killing any existing server on port $PORT..."
pkill -f "python.*main.py.*--port $PORT" 2>/dev/null || true
sleep 2
# Setup configuration to use test wildcard samples
echo "Setting up configuration..."
cat > "$CONFIG_FILE" << EOF
[default]
custom_wildcards = $IMPACT_DIR/tests/wildcards/samples
wildcard_cache_limit_mb = 50
dependency_version = 24
mmdet_skip = True
sam_editor_cpu = False
sam_editor_model = sam_vit_h_4b8939.pth
disable_gpu_opencv = True
EOF
echo "Configuration created: custom_wildcards = $IMPACT_DIR/tests/wildcards/samples"
echo ""
# Start server
echo "Starting ComfyUI server on port $PORT..."
cd "$COMFYUI_DIR"
bash run.sh --listen 127.0.0.1 --port $PORT > "$LOG_FILE" 2>&1 &
SERVER_PID=$!
echo "Server PID: $SERVER_PID"
# Wait for server startup
echo "Waiting for server startup..."
for i in {1..60}; do
sleep 1
if curl -s http://127.0.0.1:$PORT/ > /dev/null 2>&1; then
echo "✅ Server ready (${i}s)"
break
fi
if [ $((i % 10)) -eq 0 ]; then
echo " ... ${i}s elapsed"
fi
if [ $i -eq 60 ]; then
echo ""
echo "${RED}❌ Server failed to start within 60 seconds${NC}"
echo "Log tail:"
tail -20 "$LOG_FILE"
exit 1
fi
done
echo ""
# Test function
test_error_case() {
local TEST_NUM=$1
local DESCRIPTION=$2
local PROMPT=$3
local SEED=$4
local EXPECTED_BEHAVIOR=$5
echo "${BLUE}=== Test $TEST_NUM: $DESCRIPTION ===${NC}"
echo "Prompt: ${YELLOW}$PROMPT${NC}"
echo "Seed: $SEED"
echo "Expected: $EXPECTED_BEHAVIOR"
RESULT=$(curl -s -X POST http://127.0.0.1:$PORT/impact/wildcards \
-H "Content-Type: application/json" \
-d "{\"text\": \"$PROMPT\", \"seed\": $SEED}" | \
python3 -c "import sys, json; print(json.load(sys.stdin).get('text','ERROR'))" 2>/dev/null || echo "ERROR")
echo "Result: ${GREEN}$RESULT${NC}"
# Check if result is not an error
if [ "$RESULT" != "ERROR" ] && [ -n "$RESULT" ]; then
echo "Status: ${GREEN}✅ PASS - No crash, graceful handling${NC}"
else
echo "Status: ${RED}❌ FAIL - Server error or no response${NC}"
fi
echo ""
}
echo "=========================================="
echo "Test Suite Execution"
echo "=========================================="
echo ""
# Test 1: Non-existent wildcard reference
test_error_case "01" "Non-existent wildcard" \
"__test_error_cases__" \
42 \
"Should handle missing wildcard gracefully"
# Test 2: Circular reference detection
test_error_case "02" "Circular reference A" \
"__test_circular_a__" \
100 \
"Should detect cycle and stop at max iterations"
# Test 3: Circular reference from B
test_error_case "03" "Circular reference B" \
"__test_circular_b__" \
200 \
"Should detect cycle and stop at max iterations"
# Test 4: Completely non-existent wildcard
test_error_case "04" "Completely missing wildcard" \
"__this_file_does_not_exist__" \
42 \
"Should leave unexpanded or show error"
# Test 5: Mixed valid and invalid
test_error_case "05" "Mixed valid and invalid" \
"beautiful __test_quantifier__ with __nonexistent__" \
42 \
"Should expand valid, handle invalid gracefully"
# Test 6: Empty dynamic prompt
test_error_case "06" "Empty dynamic option" \
"{|something|nothing}" \
42 \
"Should handle empty option"
# Test 7: Single option dynamic
test_error_case "07" "Single option dynamic" \
"{only_one}" \
42 \
"Should return the single option"
# Test 8: Malformed dynamic prompt (unclosed)
test_error_case "08" "Malformed dynamic prompt" \
"{option1|option2" \
42 \
"Should handle unclosed bracket gracefully"
# Test 9: Very deeply nested dynamic prompts
test_error_case "09" "Very deep nesting" \
"{a|{b|{c|{d|{e|{f|{g|{h|i}}}}}}}" \
42 \
"Should handle deep nesting without crash"
# Test 10: Multiple circular references in one prompt
test_error_case "10" "Multiple circular refs" \
"__test_circular_a__ and __test_circular_b__" \
42 \
"Should handle multiple circular references"
echo ""
echo "=========================================="
echo "Summary"
echo "=========================================="
echo "${GREEN}✅ Error handling tests completed${NC}"
echo ""
echo "All tests verified graceful error handling:"
echo " 1. Non-existent wildcards handled"
echo " 2. Circular references detected (max 100 iterations)"
echo " 3. Malformed syntax handled gracefully"
echo " 4. Deep nesting processed correctly"
echo " 5. No server crashes occurred"
echo ""
echo "Log file: $LOG_FILE"