fix(hooks): skip sub-module packages in pre-commit test step
The pre-commit hook naively tested all staged package directories, including those belonging to nested Go modules (internal/fantasy has its own go.mod). Add is_sub_module() check to filter out packages whose directory contains a go.mod file.
This commit is contained in:
parent
7ae547d4a5
commit
f711421658
1 changed files with 15 additions and 3 deletions
|
|
@ -152,17 +152,29 @@ fi
|
|||
|
||||
# ── Step 4: Test (staged packages only) ──────────────────────────────────────
|
||||
|
||||
is_sub_module() {
|
||||
local dir="${1#./}"
|
||||
local check="$dir"
|
||||
while [[ "$check" != "." && -n "$check" ]]; do
|
||||
if [[ -f "$check/go.mod" ]]; then
|
||||
return 0
|
||||
fi
|
||||
check=$(dirname "$check")
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
run_tests() {
|
||||
# Only test packages that have staged changes — keeps it fast.
|
||||
# Fallback to ./... if package detection fails.
|
||||
local pkgs="$STAGED_PKGS"
|
||||
if [[ -z "$pkgs" ]]; then
|
||||
pkgs="./..."
|
||||
fi
|
||||
|
||||
# Filter to packages that actually have _test.go files
|
||||
local testable=""
|
||||
for pkg in $pkgs; do
|
||||
if is_sub_module "$pkg"; then
|
||||
continue
|
||||
fi
|
||||
if ls "${pkg}"/*_test.go >/dev/null 2>&1; then
|
||||
testable="$testable $pkg"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue