package utils
import (
"os"
"path/filepath"
"sort"
"testing"
)
func TestFindDataFiles_Basic(t *testing.T) {
dir := t.TempDir()
for _, name := range []string{"a.data", "b.data", "c.data"} {
if err := os.WriteFile(filepath.Join(dir, name), []byte("[]"), 0644); err != nil {
t.Fatal(err)
}
}
if err := os.WriteFile(filepath.Join(dir, "notes.txt"), []byte("ignore"), 0644); err != nil {
t.Fatal(err)
}
files, err := FindDataFiles(dir)
if err != nil {
t.Fatal(err)
}
sort.Strings(files)
if len(files) != 3 {
t.Fatalf("expected 3 files, got %d: %v", len(files), files)
}
for i, base := range []string{"a.data", "b.data", "c.data"} {
expected := filepath.Join(dir, base)
if files[i] != expected {
t.Errorf("file %d: got %q, want %q", i, files[i], expected)
}
}
}
func TestFindDataFiles_SkipsHidden(t *testing.T) {
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, "visible.data"), []byte("[]"), 0644); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(dir, ".hidden.data"), []byte("[]"), 0644); err != nil {
t.Fatal(err)
}
files, err := FindDataFiles(dir)
if err != nil {
t.Fatal(err)
}
if len(files) != 1 {
t.Fatalf("expected 1 file (hidden skipped), got %d: %v", len(files), files)
}
if filepath.Base(files[0]) != "visible.data" {
t.Errorf("got %q, want visible.data", files[0])
}
}
func TestFindDataFiles_NonRecursive(t *testing.T) {
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, "root.data"), []byte("[]"), 0644); err != nil {
t.Fatal(err)
}
sub := filepath.Join(dir, "subdir")
if err := os.Mkdir(sub, 0755); err != nil {
t.Fatal(err)
}
if err := os.WriteFile(filepath.Join(sub, "nested.data"), []byte("[]"), 0644); err != nil {
t.Fatal(err)
}
files, err := FindDataFiles(dir)
if err != nil {
t.Fatal(err)
}
if len(files) != 1 {
t.Fatalf("expected 1 file (non-recursive), got %d: %v", len(files), files)
}
if filepath.Base(files[0]) != "root.data" {
t.Errorf("got %q, want root.data", files[0])
}
}
func TestFindDataFiles_EmptyDir(t *testing.T) {
dir := t.TempDir()
files, err := FindDataFiles(dir)
if err != nil {
t.Fatal(err)
}
if len(files) != 0 {
t.Errorf("expected 0 files, got %d", len(files))
}
}
func TestFindDataFiles_NonexistentDir(t *testing.T) {
_, err := FindDataFiles("/nonexistent/path/12345")
if err == nil {
t.Error("expected error for nonexistent directory")
}
}
func TestFindDataFiles_NoDataFiles(t *testing.T) {
dir := t.TempDir()
if err := os.WriteFile(filepath.Join(dir, "readme.txt"), []byte("hello"), 0644); err != nil {
t.Fatal(err)
}
files, err := FindDataFiles(dir)
if err != nil {
t.Fatal(err)
}
if len(files) != 0 {
t.Errorf("expected 0 files, got %d", len(files))
}
}