Skip to content

Commit 508cc7e

Browse files
authored
add extra params to FileManagerPlayground init (#3)
1 parent b972772 commit 508cc7e

File tree

2 files changed

+68
-3
lines changed

2 files changed

+68
-3
lines changed

Sources/FileManagerKitTesting/FileManagerPlayground.swift

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,31 @@ public struct FileManagerPlayground {
178178

179179
private let fileManager: FileManager
180180
private let directory: Directory
181+
private let rootUrl: URL
181182

182183
public init(
184+
rootUrl: URL? = nil,
185+
rootName: String? = nil,
183186
fileManager: FileManager = .default,
184187
@DirectoryBuilder _ contentsClosure: () -> [Item]
185188
) {
186189
self.fileManager = fileManager
190+
self.rootUrl = rootUrl ?? self.fileManager.temporaryDirectory
191+
192+
let name = rootName ?? "FileManagerPlayground_\(UUID().uuidString)"
193+
self.directory = .init(
194+
name,
195+
contentsClosure
196+
)
197+
}
198+
199+
public init(
200+
fileManager: FileManager = .default,
201+
@DirectoryBuilder _ contentsClosure: () -> [Item]
202+
) {
203+
self.fileManager = fileManager
204+
self.rootUrl = self.fileManager.temporaryDirectory
205+
187206
self.directory = .init(
188207
"FileManagerPlayground_\(UUID().uuidString)",
189208
contentsClosure
@@ -194,13 +213,14 @@ public struct FileManagerPlayground {
194213
fileManager: FileManager = .default
195214
) {
196215
self.fileManager = fileManager
216+
self.rootUrl = self.fileManager.temporaryDirectory
217+
197218
self.directory = .init("FileManagerPlayground_\(UUID().uuidString)", {})
198219
}
199220

200221
public func test(_ tester: (FileManager, URL) throws -> Void) throws {
201-
let tempDir = fileManager.temporaryDirectory
202-
try directory.build(in: tempDir, using: fileManager)
203-
let createdDir = tempDir.appendingPathComponent(directory.name)
222+
try directory.build(in: rootUrl, using: fileManager)
223+
let createdDir = rootUrl.appendingPathComponent(directory.name)
204224
try tester(fileManager, createdDir)
205225
try fileManager.removeItem(atPath: createdDir.path())
206226
}

Tests/FileManagerKitTests/FileManagerKitTests.swift

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,4 +693,49 @@ struct FileManagerKitTestSuite {
693693
#expect(expected == results)
694694
}
695695
}
696+
697+
@Test
698+
func testExtraParams() throws {
699+
let fileManager = FileManager.default
700+
let rootUrl = fileManager.temporaryDirectory
701+
let rootName = "test"
702+
703+
try FileManagerPlayground(
704+
rootUrl: rootUrl,
705+
rootName: rootName,
706+
fileManager: fileManager
707+
) {
708+
Directory("from") {
709+
Directory("foo") {
710+
"bap"
711+
Directory("bar") {
712+
"beep"
713+
Directory("baz") {
714+
"boop"
715+
}
716+
}
717+
}
718+
}
719+
Directory("to")
720+
}
721+
.test {
722+
#expect(
723+
rootUrl.appendingPathComponent(rootName).path() == $1.path()
724+
)
725+
726+
let from = $1.appendingPathComponent("from")
727+
let to = $1.appendingPathComponent("to")
728+
729+
try $0.copyRecursively(from: from, to: to)
730+
731+
let baseUrlLength = to.path().count
732+
let results = $0.listDirectoryRecursively(at: to)
733+
.map { String($0.path().dropFirst(baseUrlLength)) }
734+
.sorted()
735+
let expected = ["foo/bap", "foo/bar/baz/boop", "foo/bar/beep"]
736+
737+
#expect(expected == results)
738+
}
739+
}
740+
696741
}

0 commit comments

Comments
 (0)