项目文件夹

文件
2026-07-13 13:00:08 +08:00

48 行
1.3 KiB
Go

package builtin
import (
"context"
"encoding/json"
"os"
"path/filepath"
"strings"
"testing"
)
func mkfile(t *testing.T, path, content string) {
t.Helper()
if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(path, []byte(content), 0o644); err != nil {
t.Fatal(err)
}
}
// TestGrepSkipsVendorDirs proves a recursive grep prunes nested node_modules
// (perf + noise) but still searches one when it's the explicit target.
func TestGrepSkipsVendorDirs(t *testing.T) {
dir := t.TempDir()
mkfile(t, filepath.Join(dir, "app.go"), "the needle is here\n")
mkfile(t, filepath.Join(dir, "node_modules", "dep", "lib.go"), "needle in a dependency\n")
grepIn := func(path string) string {
args, _ := json.Marshal(map[string]any{"pattern": "needle", "path": path})
out, _ := grepTool{}.Execute(context.Background(), args)
return out
}
root := grepIn(dir)
if !strings.Contains(root, "app.go") {
t.Errorf("grep should find app.go: %q", root)
}
if strings.Contains(root, "node_modules") {
t.Errorf("grep should skip nested node_modules, got: %q", root)
}
nested := grepIn(filepath.Join(dir, "node_modules"))
if !strings.Contains(nested, "lib.go") {
t.Errorf("an explicit node_modules grep should still search it: %q", nested)
}
}