#!/usr/bin/env bash # Bisection script to find which test creates unwanted files/state # Usage: ./find-polluter.sh # Example: ./find-polluter.sh '.git' 'src/**/*.test.ts' set -e if [ $# -ne 2 ]; then echo "Usage: $0 " echo "Example: $0 '.git' 'src/**/*.test.ts'" exit 1 fi POLLUTION_CHECK="$1" TEST_PATTERN="$2" echo "🔍 Searching for test that creates: $POLLUTION_CHECK" echo "Test pattern: $TEST_PATTERN" echo "" # Get list of test files TEST_FILES=$(find . -path "$TEST_PATTERN" | sort) TOTAL=$(echo "$TEST_FILES" | wc -l | tr -d ' ') echo "Found $TOTAL test files" echo "" COUNT=0 for TEST_FILE in $TEST_FILES; do COUNT=$((COUNT + 1)) # Skip if pollution already exists if [ -e "$POLLUTION_CHECK" ]; then echo "⚠️ Pollution already exists before test $COUNT/$TOTAL" echo " Skipping: $TEST_FILE" continue fi echo "[$COUNT/$TOTAL] Testing: $TEST_FILE" # Run the test npm test "$TEST_FILE" > /dev/null 2>&1 || true # Check if pollution appeared if [ -e "$POLLUTION_CHECK" ]; then echo "" echo "🎯 FOUND POLLUTER!" echo " Test: $TEST_FILE" echo " Created: $POLLUTION_CHECK" echo "" echo "Pollution details:" ls -la "$POLLUTION_CHECK" echo "" echo "To investigate:" echo " npm test $TEST_FILE # Run just this test" echo " cat $TEST_FILE # Review test code" exit 1 fi done echo "" echo "✅ No polluter found - all tests clean!" exit 0