You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							117 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							117 lines
						
					
					
						
							3.4 KiB
						
					
					
				
								#!/bin/bash
							 | 
						|
								
							 | 
						|
								# Test script for the debug pre-commit hook
							 | 
						|
								# This script helps verify that the hook is working correctly
							 | 
						|
								
							 | 
						|
								set -e
							 | 
						|
								
							 | 
						|
								echo "🧪 Testing TimeSafari Debug Pre-commit Hook"
							 | 
						|
								echo "============================================="
							 | 
						|
								
							 | 
						|
								# Colors for output
							 | 
						|
								RED='\033[0;31m'
							 | 
						|
								GREEN='\033[0;32m'
							 | 
						|
								YELLOW='\033[1;33m'
							 | 
						|
								BLUE='\033[0;34m'
							 | 
						|
								NC='\033[0m' # No Color
							 | 
						|
								
							 | 
						|
								# Test directory
							 | 
						|
								TEST_DIR="$(mktemp -d)"
							 | 
						|
								echo -e "${BLUE}Created test directory: $TEST_DIR${NC}"
							 | 
						|
								
							 | 
						|
								# Function to cleanup
							 | 
						|
								cleanup() {
							 | 
						|
								    echo -e "${YELLOW}Cleaning up test directory...${NC}"
							 | 
						|
								    rm -rf "$TEST_DIR"
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								# Set trap to cleanup on exit
							 | 
						|
								trap cleanup EXIT
							 | 
						|
								
							 | 
						|
								# Function to run test
							 | 
						|
								run_test() {
							 | 
						|
								    local test_name="$1"
							 | 
						|
								    local test_file="$2"
							 | 
						|
								    local expected_exit="$3"
							 | 
						|
								    
							 | 
						|
								    echo -e "\n${BLUE}Running test: $test_name${NC}"
							 | 
						|
								    
							 | 
						|
								    # Create test file
							 | 
						|
								    echo "$test_file" > "$TEST_DIR/test.vue"
							 | 
						|
								    
							 | 
						|
								    # Stage the file
							 | 
						|
								    cd "$TEST_DIR"
							 | 
						|
								    git init > /dev/null 2>&1
							 | 
						|
								    git add test.vue > /dev/null 2>&1
							 | 
						|
								    
							 | 
						|
								    # Run the hook
							 | 
						|
								    if bash ../../.git/hooks/pre-commit > hook_output.txt 2>&1; then
							 | 
						|
								        exit_code=0
							 | 
						|
								    else
							 | 
						|
								        exit_code=$?
							 | 
						|
								    fi
							 | 
						|
								    
							 | 
						|
								    # Check result
							 | 
						|
								    if [[ $exit_code -eq $expected_exit ]]; then
							 | 
						|
								        echo -e "  ${GREEN}✅ PASS${NC} - Exit code: $exit_code (expected: $expected_exit)"
							 | 
						|
								    else
							 | 
						|
								        echo -e "  ${RED}❌ FAIL${NC} - Exit code: $exit_code (expected: $expected_exit)"
							 | 
						|
								        echo -e "  ${YELLOW}Hook output:${NC}"
							 | 
						|
								        cat hook_output.txt
							 | 
						|
								    fi
							 | 
						|
								    
							 | 
						|
								    # Cleanup git
							 | 
						|
								    rm -rf .git
							 | 
						|
								    rm -f hook_output.txt
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								# Test cases
							 | 
						|
								echo -e "\n${BLUE}Test Case 1: Clean file (should pass)${NC}"
							 | 
						|
								run_test "Clean file" "// No debug code here" 0
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 2: Console statement (should fail)${NC}"
							 | 
						|
								run_test "Console statement" "console.log('debug info')" 1
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 3: Debug template (should fail)${NC}"
							 | 
						|
								run_test "Debug template" "Debug: {{ isMapReady ? 'Map Ready' : 'Map Loading' }}" 1
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 4: Debug constant (should fail)${NC}"
							 | 
						|
								run_test "Debug constant" "const DEBUG_MODE = true" 1
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 5: Mixed content (should fail)${NC}"
							 | 
						|
								run_test "Mixed content" "// Some normal code\nconsole.debug('test')\n// More normal code" 1
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 6: HTML debug comment (should fail)${NC}"
							 | 
						|
								run_test "HTML debug comment" "<!-- debug: this is debug info -->" 1
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 7: Debug attribute (should fail)${NC}"
							 | 
						|
								run_test "Debug attribute" "<div debug='true'>content</div>" 1
							 | 
						|
								
							 | 
						|
								echo -e "\n${BLUE}Test Case 8: Test file (should be skipped)${NC}"
							 | 
						|
								run_test "Test file" "console.log('this should be skipped')" 0
							 | 
						|
								
							 | 
						|
								# Test branch detection
							 | 
						|
								echo -e "\n${BLUE}Testing branch detection...${NC}"
							 | 
						|
								cd "$TEST_DIR"
							 | 
						|
								git init > /dev/null 2>&1
							 | 
						|
								git checkout -b feature-branch > /dev/null 2>&1
							 | 
						|
								echo "console.log('debug')" > test.vue
							 | 
						|
								git add test.vue > /dev/null 2>&1
							 | 
						|
								
							 | 
						|
								if bash ../../.git/hooks/pre-commit > hook_output.txt 2>&1; then
							 | 
						|
								    echo -e "  ${GREEN}✅ PASS${NC} - Hook skipped on feature branch"
							 | 
						|
								else
							 | 
						|
								    echo -e "  ${RED}❌ FAIL${NC} - Hook should have been skipped on feature branch"
							 | 
						|
								    echo -e "  ${YELLOW}Hook output:${NC}"
							 | 
						|
								    cat hook_output.txt
							 | 
						|
								fi
							 | 
						|
								
							 | 
						|
								rm -rf .git
							 | 
						|
								rm -f hook_output.txt
							 | 
						|
								
							 | 
						|
								echo -e "\n${GREEN}🎉 All tests completed!${NC}"
							 | 
						|
								echo -e "\n${BLUE}To test manually:${NC}"
							 | 
						|
								echo "1. Make changes to a file with debug code"
							 | 
						|
								echo "2. Stage the file: git add <filename>"
							 | 
						|
								echo "3. Try to commit: git commit -m 'test'"
							 | 
						|
								echo "4. The hook should prevent the commit if debug code is found"
							 | 
						|
								
							 |