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"
 | |
| 
 |