fix: count tracked files for test-file metric in /retro and /ship

The test-file count scanned the whole working tree with `find`, so it
counted untracked build output as test files. On a Rails repo using
`bundle install --path vendor/bundle` it over-reported by 37x:

    find . -name '*.test.*' ... | grep -v node_modules | wc -l   -> 623
    git ls-files | grep -E '(\.test\.|...)' | wc -l              ->  17

The 623 breaks down as 433 from vendor/bundle gem suites, 189 from
.claude/worktrees/ agent copies, 4 from nested node_modules, and 17
real files under test/.

`grep -v node_modules` only filters output lines, so find still walks
every ignored tree, and it does nothing for vendor/, worktrees, tmp/,
target/, .venv/, Pods/ and so on. No exclusion list can stay complete,
so count tracked files instead: untracked build output is excluded by
definition, .gitignore is respected for free, and it avoids the
full-tree walk. Both skills already require a git repo and run
`git log origin/<default>` in the same step.

Fixes #2307

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
joshrpowell 2026-07-20 08:40:09 -04:00
parent a3259400a3
commit 563a93fded
7 changed files with 11 additions and 11 deletions

View File

@ -60,7 +60,7 @@ git log origin/main --since="<window>" --format="AUTHOR:%aN" --name-only
git shortlog origin/main --since="<window>" -sn --no-merges
# Test file count
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' 2>/dev/null | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
# Test files changed in window
git log origin/main --since="<window>" --format="" --name-only | grep -E '\.(test|spec)\.' | sort -u | wc -l

View File

@ -1026,7 +1026,7 @@ cat ~/.gstack/greptile-history.md 2>/dev/null || true
cat TODOS.md 2>/dev/null || true
# 10. Test file count
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' 2>/dev/null | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
# 11. Regression test commits in window
git log origin/<default> --since="<window>" --oneline --grep="test(qa):" --grep="test(design):" --grep="test: coverage"

View File

@ -197,7 +197,7 @@ cat ~/.gstack/greptile-history.md 2>/dev/null || true
cat TODOS.md 2>/dev/null || true
# 10. Test file count
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' 2>/dev/null | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
# 11. Regression test commits in window
git log origin/<default> --since="<window>" --oneline --grep="test(qa):" --grep="test(design):" --grep="test: coverage"

View File

@ -222,7 +222,7 @@ ls -d test/ tests/ spec/ __tests__/ cypress/ e2e/ 2>/dev/null
\`\`\`bash
# Count test files before any generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\\.test\\.|\\.spec\\.|_test\\.|_spec\\.)' | wc -l
\`\`\`
Store this number for the PR body.`);
@ -430,7 +430,7 @@ If no test framework AND user declined bootstrap → diagram only, no generation
\`\`\`bash
# Count test files after generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\\.test\\.|\\.spec\\.|_test\\.|_spec\\.)' | wc -l
\`\`\`
For PR body: \`Tests: {before} → {after} (+{delta} new)\`

View File

@ -36,7 +36,7 @@ ls -d test/ tests/ spec/ __tests__/ cypress/ e2e/ 2>/dev/null
```bash
# Count test files before any generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
```
Store this number for the PR body.
@ -174,7 +174,7 @@ If no test framework AND user declined bootstrap → diagram only, no generation
```bash
# Count test files after generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
```
For PR body: `Tests: {before} → {after} (+{delta} new)`

View File

@ -1387,7 +1387,7 @@ ls -d test/ tests/ spec/ __tests__/ cypress/ e2e/ 2>/dev/null
```bash
# Count test files before any generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
```
Store this number for the PR body.
@ -1525,7 +1525,7 @@ If no test framework AND user declined bootstrap → diagram only, no generation
```bash
# Count test files after generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
```
For PR body: `Tests: {before} → {after} (+{delta} new)`

View File

@ -1389,7 +1389,7 @@ ls -d test/ tests/ spec/ __tests__/ cypress/ e2e/ 2>/dev/null
```bash
# Count test files before any generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
```
Store this number for the PR body.
@ -1527,7 +1527,7 @@ If no test framework AND user declined bootstrap → diagram only, no generation
```bash
# Count test files after generation
find . -name '*.test.*' -o -name '*.spec.*' -o -name '*_test.*' -o -name '*_spec.*' | grep -v node_modules | wc -l
git ls-files 2>/dev/null | grep -E '(\.test\.|\.spec\.|_test\.|_spec\.)' | wc -l
```
For PR body: `Tests: {before} → {after} (+{delta} new)`