1package fsext
2
3import (
4 "os"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8)
9
10func TestCrushIgnore(t *testing.T) {
11 // Create a temporary directory for testing
12 tempDir := t.TempDir()
13
14 // Change to temp directory
15 oldWd, _ := os.Getwd()
16 err := os.Chdir(tempDir)
17 require.NoError(t, err)
18 defer os.Chdir(oldWd)
19
20 // Create test files
21 require.NoError(t, os.WriteFile("test1.txt", []byte("test"), 0644))
22 require.NoError(t, os.WriteFile("test2.log", []byte("test"), 0644))
23 require.NoError(t, os.WriteFile("test3.tmp", []byte("test"), 0644))
24
25 // Create a .crushignore file that ignores .log files
26 require.NoError(t, os.WriteFile(".crushignore", []byte("*.log\n"), 0644))
27
28 // Test DirectoryLister
29 t.Run("DirectoryLister respects .crushignore", func(t *testing.T) {
30 dl := NewDirectoryLister(tempDir)
31
32 // Test that .log files are ignored
33 require.True(t, dl.gitignore == nil, "gitignore should be nil")
34 require.NotNil(t, dl.crushignore, "crushignore should not be nil")
35 })
36
37 // Test FastGlobWalker
38 t.Run("FastGlobWalker respects .crushignore", func(t *testing.T) {
39 walker := NewFastGlobWalker(tempDir)
40
41 require.True(t, walker.gitignore == nil, "gitignore should be nil")
42 require.NotNil(t, walker.crushignore, "crushignore should not be nil")
43 })
44}