CodeEditTests/Utils/withTempDir.swift
Rama main · réplica de lectura del repositorio original.
//
// withTempDir.swift
// CodeEditTests
//
// Created by Khan Winter on 7/3/25.
//
import Foundation
import Testing
func withTempDir(_ test: (URL) async throws -> Void) async throws {
guard let currentTest = Test.current else {
#expect(Bool(false))
return
}
let tempDirURL = try createAndClearDir(file: currentTest.sourceLocation.fileID + currentTest.name)
do {
try await test(tempDirURL)
} catch {
try clearDir(tempDirURL)
throw error
}
try clearDir(tempDirURL)
}
func withTempDir(_ test: (URL) throws -> Void) throws {
guard let currentTest = Test.current else {
#expect(Bool(false))
return
}
let tempDirURL = try createAndClearDir(file: currentTest.sourceLocation.fileID + currentTest.name)
do {
try test(tempDirURL)
} catch {
try clearDir(tempDirURL)
throw error
}
try clearDir(tempDirURL)
}
private func createAndClearDir(file: String) throws -> URL {
let file = file.components(separatedBy: CharacterSet(charactersIn: "/:?%*|\"<>")).joined()
let tempDirURL = FileManager.default.temporaryDirectory
.appending(path: "CodeEditTestDirectory" + file, directoryHint: .isDirectory)
// If it exists, delete it before the test
try clearDir(tempDirURL)
try FileManager.default.createDirectory(at: tempDirURL, withIntermediateDirectories: true)
return tempDirURL
}
private func clearDir(_ url: URL) throws {
if FileManager.default.fileExists(atPath: url.absoluteURL.path(percentEncoded: false)) {
try FileManager.default.removeItem(at: url)
}
}