1package agent
2
3import (
4 "os"
5 "path/filepath"
6 "strings"
7 "testing"
8)
9
10func TestReadAgentsContextLoadsGlobalAndAncestors(t *testing.T) {
11 root := t.TempDir()
12 zotHome := filepath.Join(root, "zot-home")
13 project := filepath.Join(root, "repo")
14 nested := filepath.Join(project, "packages", "app")
15 if err := os.MkdirAll(zotHome, 0o755); err != nil {
16 t.Fatal(err)
17 }
18 if err := os.MkdirAll(nested, 0o755); err != nil {
19 t.Fatal(err)
20 }
21 if err := os.WriteFile(filepath.Join(zotHome, "AGENTS.md"), []byte("global rule"), 0o644); err != nil {
22 t.Fatal(err)
23 }
24 if err := os.WriteFile(filepath.Join(project, "AGENTS.md"), []byte("repo rule"), 0o644); err != nil {
25 t.Fatal(err)
26 }
27 if err := os.WriteFile(filepath.Join(nested, "AGENTS.md"), []byte("app rule"), 0o644); err != nil {
28 t.Fatal(err)
29 }
30
31 got := readAgentsContext(nested, zotHome)
32 for _, want := range []string{"global rule", "repo rule", "app rule"} {
33 if !strings.Contains(got, want) {
34 t.Fatalf("readAgentsContext missing %q in:\n%s", want, got)
35 }
36 }
37 if strings.Index(got, "global rule") > strings.Index(got, "repo rule") || strings.Index(got, "repo rule") > strings.Index(got, "app rule") {
38 t.Fatalf("AGENTS.md files loaded in wrong order:\n%s", got)
39 }
40}
41
42func TestReadAgentsContextMissingFilesIsEmpty(t *testing.T) {
43 got := readAgentsContext(t.TempDir(), t.TempDir())
44 if got != "" {
45 t.Fatalf("expected no context, got %q", got)
46 }
47}