//go:build linux // +build linux package storage import ( "context" "os" "path/filepath" "testing" "time" ) func Test_WaitForFileMatchingPattern_Success(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() testDir := t.TempDir() actualPath := filepath.Join(testDir, "path1") err := os.Mkdir(actualPath, 0777) if err != nil { t.Fatalf("unexpected error creating test path: %v", err) } pathPattern := filepath.Join(testDir, "path*") pathsToTest := []string{actualPath, pathPattern} for _, p := range pathsToTest { result, err := WaitForFileMatchingPattern(ctx, p) if err != nil { t.Fatalf("expected to find path %v but got error: %v", p, err) } if result != actualPath { t.Fatalf("expected to return path %s, instead go %s", actualPath, result) } } } func Test_WaitForFileMatchingPattern_Multiple_Matches(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() testDir := t.TempDir() actualPaths := []string{"path1", "path2"} for _, p := range actualPaths { fullPath := filepath.Join(testDir, p) err := os.Mkdir(fullPath, 0777) if err != nil { t.Fatalf("unexpected error creating test path: %v", err) } } pathPattern := filepath.Join(testDir, "path*") _, err := WaitForFileMatchingPattern(ctx, pathPattern) if err == nil { t.Fatalf("expected to fail due to multiple matching files") } } func Test_WaitForFileMatchingPattern_No_Matches(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() testDir := t.TempDir() actualPath := filepath.Join(testDir, "path1") err := os.Mkdir(actualPath, 0777) if err != nil { t.Fatalf("unexpected error creating test path: %v", err) } badTestPath := filepath.Join(testDir, "path2") _, err = WaitForFileMatchingPattern(ctx, badTestPath) if err == nil { t.Fatalf("expected to fail due to no matching files") } }