Files
ComfyUI/custom_nodes/ComfyUI-Impact-Pack/tests/test_deep_nesting.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

281 lines
8.0 KiB
Bash
Executable File

#!/bin/bash
# Deep Nesting Test Suite
# Tests transitive wildcard expansion up to 7 levels
set -e
PORT=8194
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/deep_nesting_test.log"
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
echo "=========================================="
echo "Deep Nesting Test Suite (7 Levels)"
echo "=========================================="
echo "Port: $PORT"
echo "Testing: Transitive wildcard expansion"
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
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 for nesting
test_nesting() {
local TEST_NUM=$1
local DESCRIPTION=$2
local PROMPT=$3
local SEED=$4
local EXPECTED_DEPTH=$5
echo "${BLUE}=== Test $TEST_NUM: $DESCRIPTION ===${NC}"
echo "Prompt: ${YELLOW}$PROMPT${NC}"
echo "Seed: $SEED"
echo "Expected nesting depth: $EXPECTED_DEPTH"
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 contains any unexpanded wildcards
if echo "$RESULT" | grep -q "__.*__"; then
echo "Status: ${YELLOW}⚠️ WARNING - Contains unexpanded wildcards${NC}"
echo "Unexpanded: $(echo "$RESULT" | grep -o '__[^_]*__')"
elif [ "$RESULT" != "ERROR" ] && [ -n "$RESULT" ]; then
echo "Status: ${GREEN}✅ PASS - All wildcards fully expanded${NC}"
else
echo "Status: ${RED}❌ FAIL - Server error or no response${NC}"
fi
echo ""
}
echo "=========================================="
echo "Test Suite Execution"
echo "=========================================="
echo ""
# Direct level tests
echo "${CYAN}--- Direct Level Access Tests ---${NC}"
echo ""
test_nesting "01" "Level 7 (Final)" \
"__test_nesting_level7__" \
100 \
0
test_nesting "02" "Level 6 → Level 7" \
"__test_nesting_level6__" \
200 \
1
test_nesting "03" "Level 5 → Level 6 → Level 7" \
"__test_nesting_level5__" \
300 \
2
test_nesting "04" "Level 4 → ... → Level 7" \
"__test_nesting_level4__" \
400 \
3
test_nesting "05" "Level 3 → ... → Level 7" \
"__test_nesting_level3__" \
500 \
4
test_nesting "06" "Level 2 → ... → Level 7" \
"__test_nesting_level2__" \
600 \
5
test_nesting "07" "Level 1 → ... → Level 7 (Full 7 levels)" \
"__test_nesting_level1__" \
700 \
6
echo ""
echo "${CYAN}--- Multiple Nesting Tests ---${NC}"
echo ""
test_nesting "08" "Two level 1 wildcards" \
"__test_nesting_level1__ and __test_nesting_level1__" \
800 \
6
test_nesting "09" "Mixed depths" \
"__test_nesting_level1__ with __test_nesting_level4__" \
900 \
6
test_nesting "10" "Level 1 in dynamic prompt" \
"{__test_nesting_level1__|__test_nesting_level2__|__test_nesting_level3__}" \
1000 \
6
echo ""
echo "${CYAN}--- Complex Combination Tests ---${NC}"
echo ""
test_nesting "11" "Nesting with quantifier" \
"2#__test_nesting_level1__" \
1100 \
6
test_nesting "12" "Nesting with multi-select" \
"{2\$\$, \$\$__test_nesting_level1__|__test_nesting_level2__|__test_nesting_level3__}" \
1200 \
6
test_nesting "13" "Nesting with weighted selection" \
"{5::__test_nesting_level1__|3::__test_nesting_level3__|1::__test_nesting_level5__}" \
1300 \
6
test_nesting "14" "Very deep with other wildcards" \
"__test_nesting_level1__ beautiful __아름다운색__" \
1400 \
6
test_nesting "15" "All 7 levels in one prompt" \
"__test_nesting_level1__, __test_nesting_level2__, __test_nesting_level3__, __test_nesting_level4__, __test_nesting_level5__, __test_nesting_level6__, __test_nesting_level7__" \
1500 \
6
echo ""
echo "${CYAN}--- Depth-Agnostic Pattern Matching Tests ---${NC}"
echo ""
# Test 16: Depth-agnostic pattern matching with __*/test_nesting_level7__
# The __*/name__ pattern matches wildcards at ANY directory depth:
# - test_nesting_level7.txt (at root level)
# - level1/level2/.../level7/test_nesting_level7.txt (deeply nested)
# - any_folder/test_nesting_level7.txt (in any subfolder)
test_nesting "16" "Pattern matching __*/test_nesting_level7__" \
"__*/test_nesting_level7__" \
1600 \
0
# Test 17: Depth-agnostic pattern matching with __*/test_nesting_level4__
# Similar to __*/dragon__ matching both "dragon.txt" and "dragon/wizard.txt":
# - test_nesting_level4.txt (direct file)
# - level1/.../level4/test_nesting_level4.txt (nested file)
# - The pattern ignores directory depth and matches by wildcard name
test_nesting "17" "Pattern matching __*/test_nesting_level4__" \
"__*/test_nesting_level4__" \
1700 \
3
echo ""
echo "=========================================="
echo "Loaded Wildcards Check"
echo "=========================================="
# Check what wildcards were loaded
LOADED=$(curl -s http://127.0.0.1:$PORT/impact/wildcards/list/loaded 2>/dev/null | python3 -c "import sys, json; data = json.load(sys.stdin); print('\n'.join(data.get('data', [])))" 2>/dev/null || echo "ERROR")
if [ "$LOADED" != "ERROR" ]; then
echo "Loaded wildcards:"
echo "$LOADED" | grep -E "test_nesting" | sed 's/^/ /'
NESTING_COUNT=$(echo "$LOADED" | grep -c "test_nesting" || echo "0")
echo ""
echo "Total nesting wildcards loaded: $NESTING_COUNT"
if [ "$NESTING_COUNT" -ge 7 ]; then
echo "${GREEN}✅ All 7 nesting levels loaded${NC}"
else
echo "${YELLOW}⚠️ Only $NESTING_COUNT nesting levels loaded (expected 7)${NC}"
fi
else
echo "${YELLOW}⚠️ Could not retrieve loaded wildcards list${NC}"
fi
echo ""
echo "=========================================="
echo "Summary"
echo "=========================================="
echo "${GREEN}✅ Deep nesting tests completed${NC}"
echo ""
echo "Test results:"
echo " 1. 7-level transitive expansion tested ✓"
echo " 2. All depth levels (1-7) individually tested ✓"
echo " 3. Mixed depth combinations tested ✓"
echo " 4. Nesting with quantifiers and multi-select ✓"
echo " 5. Nesting with weighted selection ✓"
echo " 6. Depth-agnostic pattern matching (__*/pattern__) ✓"
echo " 7. Complex multi-wildcard prompts ✓"
echo ""
echo "Maximum nesting depth verified: 7 levels"
echo "All wildcards should be fully expanded without crashes"
echo ""
echo "Log file: $LOG_FILE"