按 code quality review 反馈: - seedFromBundle 找不到 bundle 资源时,DEBUG 下 assertionFailure 提示 target membership(release 仍静默 return),避免 W6 启用时排查困难 - 补 totalBytesReturnsZeroWhenFolderMissing 测试,覆盖 folder 不存在时 enumerator 为 nil 的 guard 路径 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
55 lines
1.9 KiB
Swift
55 lines
1.9 KiB
Swift
import Testing
|
|
import Foundation
|
|
@testable import 体己
|
|
|
|
struct ModelStoreTests {
|
|
|
|
private func isolatedStore() throws -> ModelStore {
|
|
let temp = FileManager.default.temporaryDirectory
|
|
.appendingPathComponent(UUID().uuidString, isDirectory: true)
|
|
return try ModelStore(rootURL: temp)
|
|
}
|
|
|
|
@Test func freshStoreReportsBothModelsMissing() throws {
|
|
let store = try isolatedStore()
|
|
defer { try? FileManager.default.removeItem(at: store.rootURL) }
|
|
|
|
#expect(store.isReady(.llm) == false)
|
|
#expect(store.isReady(.vl) == false)
|
|
}
|
|
|
|
@Test func markReadyAfterFolderCreated() throws {
|
|
let store = try isolatedStore()
|
|
defer { try? FileManager.default.removeItem(at: store.rootURL) }
|
|
|
|
let llmFolder = store.localURL(for: .llm)
|
|
try FileManager.default.createDirectory(at: llmFolder, withIntermediateDirectories: true)
|
|
let configURL = llmFolder.appendingPathComponent("config.json")
|
|
try "{}".write(to: configURL, atomically: true, encoding: .utf8)
|
|
|
|
#expect(store.isReady(.llm) == true)
|
|
#expect(store.isReady(.vl) == false)
|
|
}
|
|
|
|
@Test func totalBytesSumsExistingFiles() throws {
|
|
let store = try isolatedStore()
|
|
defer { try? FileManager.default.removeItem(at: store.rootURL) }
|
|
|
|
let folder = store.localURL(for: .llm)
|
|
try FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true)
|
|
let data = Data(repeating: 0, count: 1024)
|
|
try data.write(to: folder.appendingPathComponent("a.bin"))
|
|
try data.write(to: folder.appendingPathComponent("b.bin"))
|
|
|
|
#expect(store.totalBytes(for: .llm) == 2048)
|
|
}
|
|
|
|
@Test func totalBytesReturnsZeroWhenFolderMissing() throws {
|
|
let store = try isolatedStore()
|
|
defer { try? FileManager.default.removeItem(at: store.rootURL) }
|
|
|
|
// 没创建任何 vl 目录
|
|
#expect(store.totalBytes(for: .vl) == 0)
|
|
}
|
|
}
|