@@ -0,0 +1,66 @@
8+ "github.com/stretchr/testify/assert"
9+ "github.com/stretchr/testify/require"
12+func chdir(t *testing.T, dir string) {
13+ original, err := os.Getwd()
14+ require.NoError(t, err)
17+ require.NoError(t, err)
20+ err := os.Chdir(original)
21+ require.NoError(t, err)
25+func TestListDirectory(t *testing.T) {
26+ tempDir := t.TempDir()
29+ testFiles := map[string]string{
30+ "regular.txt": "content",
31+ ".hidden": "hidden content",
32+ ".gitignore": ".*\n*.log\n",
33+ "subdir/file.go": "package main",
34+ "subdir/.another": "more hidden",
35+ "build.log": "build output",
38+ for filePath, content := range testFiles {
39+ dir := filepath.Dir(filePath)
41+ require.NoError(t, os.MkdirAll(dir, 0o755))
44+ err := os.WriteFile(filePath, []byte(content), 0o644)
45+ require.NoError(t, err)
48+ files, truncated, err := ListDirectory(".", nil, 0)
49+ require.NoError(t, err)
50+ assert.False(t, truncated)
51+ assert.Equal(t, len(files), 4)
53+ fileSet := make(map[string]bool)
54+ for _, file := range files {
55+ fileSet[filepath.ToSlash(file)] = true
58+ assert.True(t, fileSet["./regular.txt"])
59+ assert.True(t, fileSet["./subdir/"])
60+ assert.True(t, fileSet["./subdir/file.go"])
61+ assert.True(t, fileSet["./regular.txt"])
63+ assert.False(t, fileSet["./.hidden"])
64+ assert.False(t, fileSet["./.gitignore"])
65+ assert.False(t, fileSet["./build.log"])