Files
BigChef/glob_test.go

96 lines
2.3 KiB
Go

package main
import (
"modify/utils"
"os"
"path/filepath"
"testing"
)
func TestGlobExpansion(t *testing.T) {
// Create a temporary directory structure for testing
tmpDir, err := os.MkdirTemp("", "glob-test")
if err != nil {
t.Fatalf("Failed to create temp dir: %v", err)
}
defer os.RemoveAll(tmpDir)
// Create some test files
testFiles := []string{
filepath.Join(tmpDir, "file1.xml"),
filepath.Join(tmpDir, "file2.xml"),
filepath.Join(tmpDir, "test.txt"),
filepath.Join(tmpDir, "subdir", "file3.xml"),
filepath.Join(tmpDir, "subdir", "file4.txt"),
filepath.Join(tmpDir, "subdir", "nested", "file5.xml"),
}
// Create the directory structure
err = os.MkdirAll(filepath.Join(tmpDir, "subdir", "nested"), 0755)
if err != nil {
t.Fatalf("Failed to create subdirectories: %v", err)
}
// Create the files
for _, file := range testFiles {
dir := filepath.Dir(file)
if err := os.MkdirAll(dir, 0755); err != nil {
t.Fatalf("Failed to create directory %s: %v", dir, err)
}
if err := os.WriteFile(file, []byte("test content"), 0644); err != nil {
t.Fatalf("Failed to create file %s: %v", file, err)
}
}
// Change to the temporary directory to use relative paths
origDir, _ := os.Getwd()
os.Chdir(tmpDir)
defer os.Chdir(origDir)
// Test cases
tests := []struct {
name string
patterns []string
expected int
}{
{
name: "Simple pattern",
patterns: []string{"*.xml"},
expected: 2, // file1.xml, file2.xml
},
{
name: "Multiple patterns",
patterns: []string{"*.xml", "*.txt"},
expected: 3, // file1.xml, file2.xml, test.txt
},
{
name: "Directory globbing",
patterns: []string{"subdir/*.xml"},
expected: 1, // subdir/file3.xml
},
{
name: "Doublestar pattern",
patterns: []string{"**/*.xml"},
expected: 4, // All XML files in all directories
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
// Convert string patterns to map[string]struct{} for ExpandGLobs
patternMap := make(map[string]struct{})
for _, pattern := range tc.patterns {
patternMap[pattern] = struct{}{}
}
files, err := utils.ExpandGLobs(patternMap)
if err != nil {
t.Fatalf("ExpandGLobs failed: %v", err)
}
if len(files) != tc.expected {
t.Errorf("Expected %d files, got %d: %v", tc.expected, len(files), files)
}
})
}
}