1package prompt
2
3import (
4 "fmt"
5 "os"
6 "path/filepath"
7 "testing"
8
9 "github.com/charmbracelet/crush/internal/config"
10 "github.com/stretchr/testify/assert"
11 "github.com/stretchr/testify/require"
12)
13
14func TestGetContextFromPaths(t *testing.T) {
15 t.Parallel()
16
17 tmpDir := t.TempDir()
18 _, err := config.Load(tmpDir, false)
19 if err != nil {
20 t.Fatalf("Failed to load config: %v", err)
21 }
22 cfg := config.Get()
23 cfg.WorkingDir = tmpDir
24 cfg.ContextPaths = []string{
25 "file.txt",
26 "directory/",
27 }
28 testFiles := []string{
29 "file.txt",
30 "directory/file_a.txt",
31 "directory/file_b.txt",
32 "directory/file_c.txt",
33 }
34
35 createTestFiles(t, tmpDir, testFiles)
36
37 context := getContextFromPaths()
38 expectedContext := fmt.Sprintf("# From:%s/file.txt\nfile.txt: test content\n# From:%s/directory/file_a.txt\ndirectory/file_a.txt: test content\n# From:%s/directory/file_b.txt\ndirectory/file_b.txt: test content\n# From:%s/directory/file_c.txt\ndirectory/file_c.txt: test content", tmpDir, tmpDir, tmpDir, tmpDir)
39 assert.Equal(t, expectedContext, context)
40}
41
42func createTestFiles(t *testing.T, tmpDir string, testFiles []string) {
43 t.Helper()
44 for _, path := range testFiles {
45 fullPath := filepath.Join(tmpDir, path)
46 if path[len(path)-1] == '/' {
47 err := os.MkdirAll(fullPath, 0o755)
48 require.NoError(t, err)
49 } else {
50 dir := filepath.Dir(fullPath)
51 err := os.MkdirAll(dir, 0o755)
52 require.NoError(t, err)
53 err = os.WriteFile(fullPath, []byte(path+": test content"), 0o644)
54 require.NoError(t, err)
55 }
56 }
57}