import Foundation import Testing @testable import Inotify @Suite("Directory Resolver") struct DirectoryResolverTests { @Test func listsDirectoryTree() async throws { try await withTempDir { dir in let subDirectory = "\(dir)/Subfolder/Folder 01" try FileManager.default.createDirectory(atPath: subDirectory, withIntermediateDirectories: true) let directories = try await DirectoryResolver.resolve(dir) #expect(directories.count == 3) #expect(directories.map { $0.description } == [dir, "\(dir)/Subfolder", subDirectory]) } } @Test func doesNotDescendIntoExcludedDirectories() async throws { try await withTempDir { dir in let excludedSubdirectory = "\(dir)/Excluded/Inside" try FileManager.default.createDirectory(atPath: excludedSubdirectory, withIntermediateDirectories: true) let directories = try await DirectoryResolver.resolve(dir, excluding: ["Excluded"]) #expect(directories.map { $0.description } == [dir]) } } @Test func doesNotDescendIntoDirectoriesMatchingAnExcludedPattern() async throws { try await withTempDir { dir in let excludedSubdirectory = "\(dir)/@eaDir/Inside" try FileManager.default.createDirectory(atPath: excludedSubdirectory, withIntermediateDirectories: true) let directories = try await DirectoryResolver.resolve([dir], excluding: ExclusionList(patterns: ["@*"])) #expect(directories.map { $0.description } == [dir]) } } }