| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package fsext
- import (
- "os"
- "path/filepath"
- "testing"
- "github.com/stretchr/testify/require"
- )
- func TestListDirectory(t *testing.T) {
- tmp := t.TempDir()
- testFiles := map[string]string{
- "regular.txt": "content",
- ".hidden": "hidden content",
- ".gitignore": ".*\n*.log\n",
- "subdir/file.go": "package main",
- "subdir/.another": "more hidden",
- "build.log": "build output",
- }
- for name, content := range testFiles {
- fp := filepath.Join(tmp, name)
- dir := filepath.Dir(fp)
- require.NoError(t, os.MkdirAll(dir, 0o755))
- require.NoError(t, os.WriteFile(fp, []byte(content), 0o644))
- }
- t.Run("no limit", func(t *testing.T) {
- files, truncated, err := ListDirectory(tmp, nil, -1, -1)
- require.NoError(t, err)
- require.False(t, truncated)
- require.Len(t, files, 4)
- require.ElementsMatch(t, []string{
- "regular.txt",
- "subdir",
- "subdir/.another",
- "subdir/file.go",
- }, relPaths(t, files, tmp))
- })
- t.Run("limit", func(t *testing.T) {
- files, truncated, err := ListDirectory(tmp, nil, -1, 2)
- require.NoError(t, err)
- require.True(t, truncated)
- require.Len(t, files, 2)
- })
- }
- func relPaths(tb testing.TB, in []string, base string) []string {
- tb.Helper()
- out := make([]string, 0, len(in))
- for _, p := range in {
- rel, err := filepath.Rel(base, p)
- require.NoError(tb, err)
- out = append(out, filepath.ToSlash(rel))
- }
- return out
- }
|