localhost1978's picture
download
raw
3.53 kB
import Foundation
import Testing
@testable import SSK_DocGen
@Suite("P0-2 workspace scan")
struct GenerateWorkspaceTests {
@Test("Only supported source roots are scanned in stable order")
func supportedRootsAreScanned() throws {
let root = FileManager.default.temporaryDirectory
.appendingPathComponent("SSKDocGen-\(UUID().uuidString)", isDirectory: true)
defer { try? FileManager.default.removeItem(at: root) }
let moduleDirectory = root.appendingPathComponent("Modules/Zeta", isDirectory: true)
let sourceDirectory = root.appendingPathComponent("SSK_DocGen/Sources/Alpha", isDirectory: true)
let ignoredDirectory = root.appendingPathComponent("Other", isDirectory: true)
try FileManager.default.createDirectory(at: moduleDirectory, withIntermediateDirectories: true)
try FileManager.default.createDirectory(at: sourceDirectory, withIntermediateDirectories: true)
try FileManager.default.createDirectory(at: ignoredDirectory, withIntermediateDirectories: true)
try "struct Zeta {}".write(to: moduleDirectory.appendingPathComponent("Zeta.swift"), atomically: true, encoding: .utf8)
try "struct Alpha {}".write(to: sourceDirectory.appendingPathComponent("Alpha.swift"), atomically: true, encoding: .utf8)
try "struct Ignored {}".write(to: ignoredDirectory.appendingPathComponent("Ignored.swift"), atomically: true, encoding: .utf8)
let files = try SSK_DocGen.collectSwiftSources(in: root)
#expect(files.map(\.path) == files.map(\.path).sorted())
#expect(Set(files.map(\.lastPathComponent)) == Set(["Alpha.swift", "Zeta.swift"]))
}
@Test("A workspace without supported roots fails before generation")
func missingSupportedRootsFail() throws {
let root = FileManager.default.temporaryDirectory
.appendingPathComponent("SSKDocGen-\(UUID().uuidString)", isDirectory: true)
defer { try? FileManager.default.removeItem(at: root) }
try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true)
#expect(throws: Error.self) {
_ = try SSK_DocGen.collectSwiftSources(in: root)
}
}
@Test("A symbolic link cannot escape the selected workspace")
func symbolicLinkEscapeFails() throws {
let testRoot = FileManager.default.temporaryDirectory
.appendingPathComponent("SSKDocGen-\(UUID().uuidString)", isDirectory: true)
defer { try? FileManager.default.removeItem(at: testRoot) }
let workspace = testRoot.appendingPathComponent("workspace", isDirectory: true)
let moduleDirectory = workspace.appendingPathComponent("Modules/Example", isDirectory: true)
let outsideDirectory = testRoot.appendingPathComponent("outside", isDirectory: true)
try FileManager.default.createDirectory(at: moduleDirectory, withIntermediateDirectories: true)
try FileManager.default.createDirectory(at: outsideDirectory, withIntermediateDirectories: true)
let outsideSource = outsideDirectory.appendingPathComponent("Escape.swift")
try "struct Escape {}".write(to: outsideSource, atomically: true, encoding: .utf8)
try FileManager.default.createSymbolicLink(
at: moduleDirectory.appendingPathComponent("Escape.swift"),
withDestinationURL: outsideSource
)
#expect(throws: ApprovedPathValidationError.self) {
_ = try SSK_DocGen.collectSwiftSources(in: workspace)
}
}
}

Xet Storage Details

Size:
3.53 kB
·
Xet hash:
4a1824364dfed9a02f4dac59a9244d238e23729d215d15dd7db36f28a46b1c03

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.