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
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>
227 lines
6.7 KiB
Bash
Executable File
227 lines
6.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Test wildcard consistency between full cache and on-demand modes
|
|
|
|
set -e
|
|
|
|
# Auto-detect paths
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
IMPACT_PACK_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
COMFYUI_DIR="$(cd "$IMPACT_PACK_DIR/../.." && pwd)"
|
|
CONFIG_FILE="$IMPACT_PACK_DIR/impact-pack.ini"
|
|
BACKUP_CONFIG="$IMPACT_PACK_DIR/impact-pack.ini.backup"
|
|
|
|
# Colors
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo "=========================================="
|
|
echo "Wildcard Consistency Test"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Backup original config
|
|
if [ -f "$CONFIG_FILE" ]; then
|
|
cp "$CONFIG_FILE" "$BACKUP_CONFIG"
|
|
echo "✓ Backed up original config"
|
|
fi
|
|
|
|
# Function to kill ComfyUI
|
|
cleanup() {
|
|
pkill -f "python.*main.py" 2>/dev/null || true
|
|
sleep 2
|
|
}
|
|
|
|
# Function to test wildcard with specific config
|
|
test_with_config() {
|
|
local MODE=$1
|
|
local CACHE_LIMIT=$2
|
|
|
|
echo ""
|
|
echo "${BLUE}Testing $MODE mode (cache limit: ${CACHE_LIMIT}MB)${NC}"
|
|
echo "----------------------------------------"
|
|
|
|
# Update config
|
|
cat > "$CONFIG_FILE" << EOF
|
|
[default]
|
|
dependency_version = 24
|
|
mmdet_skip = True
|
|
sam_editor_cpu = False
|
|
sam_editor_model = sam_vit_h_4b8939.pth
|
|
custom_wildcards = $IMPACT_PACK_DIR/custom_wildcards
|
|
disable_gpu_opencv = True
|
|
wildcard_cache_limit_mb = $CACHE_LIMIT
|
|
EOF
|
|
|
|
# Start ComfyUI
|
|
cleanup
|
|
cd "$COMFYUI_DIR"
|
|
bash run.sh --listen 127.0.0.1 --port 8190 > /tmp/comfyui_${MODE}.log 2>&1 &
|
|
COMFYUI_PID=$!
|
|
|
|
echo " Waiting for server startup..."
|
|
sleep 15
|
|
|
|
# Check if server is running
|
|
if ! curl -s http://127.0.0.1:8190/ > /dev/null; then
|
|
echo "${RED}✗ Server failed to start${NC}"
|
|
cat /tmp/comfyui_${MODE}.log | grep -i "wildcard\|error" | tail -20
|
|
cleanup
|
|
return 1
|
|
fi
|
|
|
|
# Check log for mode
|
|
MODE_LOG=$(grep -i "wildcard.*mode" /tmp/comfyui_${MODE}.log | tail -1)
|
|
echo " $MODE_LOG"
|
|
|
|
# Test 1: Simple wildcard
|
|
echo ""
|
|
echo " Test 1: Simple wildcard substitution"
|
|
RESULT1=$(curl -s http://127.0.0.1:8190/impact/wildcards \
|
|
-X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"text": "__samples/flower__", "seed": 42}')
|
|
|
|
TEXT1=$(echo "$RESULT1" | python3 -c "import sys, json; print(json.load(sys.stdin)['text'])")
|
|
echo " Input: __samples/flower__"
|
|
echo " Output: $TEXT1"
|
|
echo " Result: $RESULT1" > /tmp/result_${MODE}_test1.json
|
|
|
|
# Test 2: Dynamic prompt
|
|
echo ""
|
|
echo " Test 2: Dynamic prompt"
|
|
RESULT2=$(curl -s http://127.0.0.1:8190/impact/wildcards \
|
|
-X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"text": "{red|blue|green} flower", "seed": 123}')
|
|
|
|
TEXT2=$(echo "$RESULT2" | python3 -c "import sys, json; print(json.load(sys.stdin)['text'])")
|
|
echo " Input: {red|blue|green} flower"
|
|
echo " Output: $TEXT2"
|
|
echo " Result: $RESULT2" > /tmp/result_${MODE}_test2.json
|
|
|
|
# Test 3: Combined wildcard and dynamic prompt
|
|
echo ""
|
|
echo " Test 3: Combined wildcard + dynamic prompt"
|
|
RESULT3=$(curl -s http://127.0.0.1:8190/impact/wildcards \
|
|
-X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"text": "beautiful {red|blue} __samples/flower__ with __samples/jewel__", "seed": 456}')
|
|
|
|
TEXT3=$(echo "$RESULT3" | python3 -c "import sys, json; print(json.load(sys.stdin)['text'])")
|
|
echo " Input: beautiful {red|blue} __samples/flower__ with __samples/jewel__"
|
|
echo " Output: $TEXT3"
|
|
echo " Result: $RESULT3" > /tmp/result_${MODE}_test3.json
|
|
|
|
# Test 4: Transitive YAML wildcard
|
|
echo ""
|
|
echo " Test 4: Transitive YAML wildcard (test.yaml)"
|
|
RESULT4=$(curl -s http://127.0.0.1:8190/impact/wildcards \
|
|
-X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"text": "__colors__", "seed": 222}')
|
|
|
|
TEXT4=$(echo "$RESULT4" | python3 -c "import sys, json; print(json.load(sys.stdin)['text'])")
|
|
echo " Input: __colors__ (transitive: __cold__|__warm__ -> blue|red|orange|yellow)"
|
|
echo " Output: $TEXT4"
|
|
echo " Expected: blue|red|orange|yellow"
|
|
echo " Result: $RESULT4" > /tmp/result_${MODE}_test4.json
|
|
|
|
# Test 5: Wildcard list
|
|
echo ""
|
|
echo " Test 5: Wildcard list API"
|
|
LIST_RESULT=$(curl -s http://127.0.0.1:8190/impact/wildcards/list)
|
|
LIST_COUNT=$(echo "$LIST_RESULT" | python3 -c "import sys, json; print(len(json.load(sys.stdin)['data']))")
|
|
echo " Wildcards found: $LIST_COUNT"
|
|
echo " Sample: $(echo "$LIST_RESULT" | python3 -c "import sys, json; print(', '.join(json.load(sys.stdin)['data'][:5]))")"
|
|
echo " Result: $LIST_RESULT" > /tmp/result_${MODE}_list.json
|
|
|
|
# Stop server
|
|
cleanup
|
|
|
|
echo ""
|
|
echo "${GREEN}✓ $MODE mode tests completed${NC}"
|
|
}
|
|
|
|
# Run tests
|
|
echo ""
|
|
echo "Starting consistency tests..."
|
|
|
|
# Test full cache mode
|
|
test_with_config "full_cache" 50
|
|
|
|
# Test on-demand mode
|
|
test_with_config "on_demand" 1
|
|
|
|
# Compare results
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Comparing Results"
|
|
echo "=========================================="
|
|
|
|
echo ""
|
|
echo "Test 1: Simple wildcard"
|
|
DIFF1=$(diff /tmp/result_full_cache_test1.json /tmp/result_on_demand_test1.json || true)
|
|
if [ -z "$DIFF1" ]; then
|
|
echo "${GREEN}✓ Results match${NC}"
|
|
else
|
|
echo "${RED}✗ Results differ${NC}"
|
|
echo "$DIFF1"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Test 2: Dynamic prompt"
|
|
DIFF2=$(diff /tmp/result_full_cache_test2.json /tmp/result_on_demand_test2.json || true)
|
|
if [ -z "$DIFF2" ]; then
|
|
echo "${GREEN}✓ Results match${NC}"
|
|
else
|
|
echo "${RED}✗ Results differ${NC}"
|
|
echo "$DIFF2"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Test 3: Combined wildcard + dynamic prompt"
|
|
DIFF3=$(diff /tmp/result_full_cache_test3.json /tmp/result_on_demand_test3.json || true)
|
|
if [ -z "$DIFF3" ]; then
|
|
echo "${GREEN}✓ Results match${NC}"
|
|
else
|
|
echo "${RED}✗ Results differ${NC}"
|
|
echo "$DIFF3"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Test 4: Transitive YAML wildcard"
|
|
DIFF4=$(diff /tmp/result_full_cache_test4.json /tmp/result_on_demand_test4.json || true)
|
|
if [ -z "$DIFF4" ]; then
|
|
echo "${GREEN}✓ Results match${NC}"
|
|
else
|
|
echo "${RED}✗ Results differ${NC}"
|
|
echo "$DIFF4"
|
|
fi
|
|
|
|
echo ""
|
|
echo "Test 5: Wildcard list"
|
|
DIFF_LIST=$(diff /tmp/result_full_cache_list.json /tmp/result_on_demand_list.json || true)
|
|
if [ -z "$DIFF_LIST" ]; then
|
|
echo "${GREEN}✓ Wildcard lists match${NC}"
|
|
else
|
|
echo "${RED}✗ Wildcard lists differ${NC}"
|
|
echo "$DIFF_LIST"
|
|
fi
|
|
|
|
# Restore original config
|
|
if [ -f "$BACKUP_CONFIG" ]; then
|
|
mv "$BACKUP_CONFIG" "$CONFIG_FILE"
|
|
echo ""
|
|
echo "✓ Restored original config"
|
|
fi
|
|
|
|
# Final cleanup
|
|
cleanup
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Consistency Test Complete"
|
|
echo "=========================================="
|