diff --git a/scripts/tests.yml b/scripts/tests.yml index 58477bf1..d6617fb5 100644 --- a/scripts/tests.yml +++ b/scripts/tests.yml @@ -55,46 +55,42 @@ tasks: TEST_TARGETS="" NEED_COVERAGE_MERGE=false - # Check if we should run full tests + # INCREMENTAL=false takes absolute precedence - force full test mode if [ "{{.INCREMENTAL}}" = "false" ]; then echo "Running full test suite (INCREMENTAL=false)..." TEST_MODE="full" - fi + else + # Only process incremental logic if INCREMENTAL != false + if [ ! -f "{{.COVERAGE_FILE}}" ]; then + echo "No existing coverage file found, running full tests to establish baseline" + TEST_MODE="full" + elif ! git rev-parse origin/main >/dev/null 2>&1; then + echo "Cannot find origin/main branch, defaulting to full tests" + TEST_MODE="full" + elif git rev-parse origin/main >/dev/null 2>&1; then + echo "Running incremental test suite (INCREMENTAL=true)..." + echo "Checking for Go files changed since origin/main..." - if [ "{{.INCREMENTAL}}" = "true" ] && [ ! -f "{{.COVERAGE_FILE}}" ]; then - echo "No existing coverage file found, running full tests to establish baseline" - TEST_MODE="full" - fi + CHANGED_FILES=$(git diff --name-only origin/main...HEAD | grep "\.go$" || echo "") + echo "Found $(echo "$CHANGED_FILES" | grep -v "^$" | wc -l) changed Go files since origin/main" - if [ "{{.INCREMENTAL}}" = "true" ] && [ -f "{{.COVERAGE_FILE}}" ] && ! git rev-parse origin/main >/dev/null 2>&1; then - echo "Cannot find origin/main branch, defaulting to full tests" - TEST_MODE="full" - fi - - # Handle incremental mode - if [ "{{.INCREMENTAL}}" = "true" ] && [ -f "{{.COVERAGE_FILE}}" ] && git rev-parse origin/main >/dev/null 2>&1; then - echo "Running incremental test suite (INCREMENTAL=true)..." - echo "Checking for Go files changed since origin/main..." - - CHANGED_FILES=$(git diff --name-only origin/main...HEAD | grep "\.go$" || echo "") - echo "Found $(echo "$CHANGED_FILES" | grep -v "^$" | wc -l) changed Go files since origin/main" - - if [ -z "$CHANGED_FILES" ]; then - echo "No Go files changed, skipping tests" - TEST_MODE="skip" - else - CHANGED_PKGS=$(echo "$CHANGED_FILES" | xargs dirname | sort -u | xargs -I{} go list ./{} 2>/dev/null || echo "") - echo "Changed packages: $CHANGED_PKGS" - - if [ -z "$CHANGED_PKGS" ]; then - echo "No valid Go packages affected, skipping tests" + if [ -z "$CHANGED_FILES" ]; then + echo "No Go files changed, skipping tests" TEST_MODE="skip" else - AFFECTED_PKGS=$(echo "$CHANGED_PKGS" | tr ' ' '\n' | sort -u | tr '\n' ' ') - echo "Testing affected packages: $AFFECTED_PKGS" - TEST_MODE="incremental" - TEST_TARGETS="$AFFECTED_PKGS" - NEED_COVERAGE_MERGE=true + CHANGED_PKGS=$(echo "$CHANGED_FILES" | xargs dirname | sort -u | xargs -I{} go list ./{} 2>/dev/null || echo "") + echo "Changed packages: $CHANGED_PKGS" + + if [ -z "$CHANGED_PKGS" ]; then + echo "No valid Go packages affected, skipping tests" + TEST_MODE="skip" + else + AFFECTED_PKGS=$(echo "$CHANGED_PKGS" | tr ' ' '\n' | sort -u | tr '\n' ' ') + echo "Testing affected packages: $AFFECTED_PKGS" + TEST_MODE="incremental" + TEST_TARGETS="$AFFECTED_PKGS" + NEED_COVERAGE_MERGE=true + fi fi fi fi