#!/bin/bash # Edge Cases Test Suite # Tests edge cases: empty lines, whitespace, long lines, special characters, etc. set -e PORT=8196 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/edge_cases_test.log" GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo "==========================================" echo "Edge Cases Test Suite" echo "==========================================" echo "Port: $PORT" echo "Testing: Edge cases and boundary conditions" 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 test_edge_case() { local TEST_NUM=$1 local DESCRIPTION=$2 local PROMPT=$3 local SEED=$4 echo "${BLUE}=== Test $TEST_NUM: $DESCRIPTION ===${NC}" echo "Prompt: ${YELLOW}$PROMPT${NC}" echo "Seed: $SEED" 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}" if [ "$RESULT" != "ERROR" ] && [ -n "$RESULT" ]; then echo "Status: ${GREEN}✅ PASS${NC}" else echo "Status: ${RED}❌ FAIL${NC}" fi echo "" } echo "==========================================" echo "Test Suite Execution" echo "==========================================" echo "" # Empty Lines and Whitespace Tests test_edge_case "01" "Empty lines handling" \ "__test_edge_empty_lines__" \ 100 test_edge_case "02" "Whitespace handling" \ "__test_edge_whitespace__" \ 200 test_edge_case "03" "Long lines handling" \ "__test_edge_long_lines__" \ 300 # Special Characters Tests test_edge_case "04" "Special characters in content" \ "__test_edge_special_chars__" \ 400 test_edge_case "05" "Embedded wildcard syntax" \ "__test_edge_special_chars__" \ 401 # Case Insensitivity Tests test_edge_case "06" "Lowercase wildcard" \ "__test_edge_case_insensitive__" \ 500 test_edge_case "07" "UPPERCASE wildcard" \ "__TEST_EDGE_CASE_INSENSITIVE__" \ 500 test_edge_case "08" "MixedCase wildcard" \ "__TeSt_EdGe_CaSe_InSeNsItIvE__" \ 500 # Comment Handling Tests test_edge_case "09" "Comments in wildcard file" \ "__test_comments__" \ 600 # Pattern Matching Tests test_edge_case "10" "Pattern matching __*/name__" \ "__*/test_pattern_match__" \ 700 test_edge_case "11" "Direct pattern match" \ "__test_pattern_match__" \ 700 # Quantifier Tests test_edge_case "12" "Quantifier 3#" \ "3#__test_quantifier__" \ 800 test_edge_case "13" "Quantifier 5# with dynamic" \ "{2\$\$, \$\$5#__test_quantifier__}" \ 801 # Complex Combinations test_edge_case "14" "Mixed special chars and wildcards" \ "__test_edge_special_chars__ with {option1|option2}" \ 900 test_edge_case "15" "Long prompt with multiple wildcards" \ "__test_edge_empty_lines__ and __test_edge_whitespace__ and __test_comments__" \ 1000 # Boundary Conditions test_edge_case "16" "Very long dynamic prompt" \ "{__test_edge_long_lines__|__test_edge_whitespace__|__test_edge_empty_lines__|__test_comments__|__test_edge_special_chars__}" \ 1100 test_edge_case "17" "Nested wildcards in dynamic" \ "{red __test_quantifier__|blue __test_pattern_match__|green __test_comments__}" \ 1200 test_edge_case "18" "Quantifier with case-insensitive" \ "2#__TEST_QUANTIFIER__" \ 1300 # Stress Tests test_edge_case "19" "Multiple quantifiers" \ "3#__test_quantifier__ and 2#__test_comments__" \ 1400 test_edge_case "20" "Case insensitive pattern match" \ "__*/TEST_PATTERN_MATCH__" \ 1500 echo "" echo "==========================================" echo "Summary" echo "==========================================" echo "${GREEN}✅ Edge case tests completed${NC}" echo "" echo "All tests verified edge case handling:" echo " 1. Empty lines and whitespace ✓" echo " 2. Very long lines ✓" echo " 3. Special characters ✓" echo " 4. Case-insensitive matching ✓" echo " 5. Comment line filtering ✓" echo " 6. Pattern matching (__*/name__) ✓" echo " 7. Quantifiers (N#__wildcard__) ✓" echo " 8. Complex combinations ✓" echo " 9. Boundary conditions ✓" echo "" echo "Log file: $LOG_FILE"