package extract import ( "os" "path/filepath" "strings" "testing" ) // PR #156 review: putting extract.Text(path) back at the ingest call sites // stayed green, because only TextIn itself was tested. Reading a caller-chosen // path by name reopens it after the containment check (hyperguild#153 item 3), // so outside this package only TextIn may be used. func TestNothingOutsideExtractCallsTextByPath(t *testing.T) { root := filepath.Join("..", "..") var offenders []string err := filepath.WalkDir(root, func(p string, d os.DirEntry, err error) error { if err != nil { return err } if d.IsDir() && (d.Name() == "vendor" || d.Name() == ".git") { return filepath.SkipDir } if d.IsDir() || !strings.HasSuffix(p, ".go") || strings.HasSuffix(p, "_test.go") || strings.Contains(filepath.ToSlash(p), "internal/extract/") { return nil } b, err := os.ReadFile(p) if err != nil { return err } if strings.Contains(string(b), "extract.Text(") { offenders = append(offenders, p) } return nil }) if err != nil { t.Fatal(err) } if len(offenders) > 0 { t.Fatalf("extract.Text( called outside internal/extract (use TextIn through an os.Root): %v", offenders) } }