diff --git a/blink/internal/finder/finder.go b/blink/internal/finder/finder.go index 2c3ee2a61d..033df3c7bc 100644 --- a/blink/internal/finder/finder.go +++ b/blink/internal/finder/finder.go @@ -14,10 +14,14 @@ var alwaysSkipDirs = map[string]bool{ ".git": true, } -// Find walks paths and returns every .php file not matching a skip glob. -func Find(paths []string, skip []string) ([]string, error) { +// Find walks paths and returns every .php file not matching a skip glob, plus the +// count of distinct .php files discovered before skip globs are applied. ECS counts +// every discovered file in its run summary (skipped ones included), so the caller +// reports this total while only processing the returned files. +func Find(paths []string, skip []string) ([]string, int, error) { var out []string seen := map[string]bool{} + discovered := 0 for _, p := range paths { err := filepath.WalkDir(p, func(path string, d fs.DirEntry, err error) error { @@ -33,18 +37,22 @@ func Find(paths []string, skip []string) ([]string, error) { if !strings.HasSuffix(path, ".php") { return nil } - if skipped(path, skip) || seen[path] { + if seen[path] { return nil } seen[path] = true + discovered++ + if skipped(path, skip) { + return nil + } out = append(out, path) return nil }) if err != nil { - return nil, err + return nil, 0, err } } - return out, nil + return out, discovered, nil } // Skipped reports whether path matches any of the skip globs, using the same diff --git a/blink/internal/finder/finder_test.go b/blink/internal/finder/finder_test.go index 602e52c79e..c750fcc817 100644 --- a/blink/internal/finder/finder_test.go +++ b/blink/internal/finder/finder_test.go @@ -27,7 +27,7 @@ func TestFindSkipsDependencyDirs(t *testing.T) { } } - found, err := Find([]string{root}, nil) + found, discovered, err := Find([]string{root}, nil) if err != nil { t.Fatal(err) } @@ -47,6 +47,35 @@ func TestFindSkipsDependencyDirs(t *testing.T) { t.Fatalf("missing %s in %v", w, found) } } + // dependency dirs and non-.php files are not discovered either + if discovered != len(want) { + t.Fatalf("discovered = %d, want %d", discovered, len(want)) + } +} + +func TestFindCountsSkippedFiles(t *testing.T) { + root := t.TempDir() + for _, rel := range []string{"src/a.php", "src/Fixture/b.php", "src/Fixture/c.php"} { + full := filepath.Join(root, rel) + if err := os.MkdirAll(filepath.Dir(full), 0o755); err != nil { + t.Fatal(err) + } + if err := os.WriteFile(full, []byte("