Files
kangkang/体己Tests/ModelStoreTests.swift
link2026 d40cb7d1e0 harden(ai): ModelStore seedFromBundle 在 DEBUG 报错,加空目录测试
按 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>
2026-05-25 15:12:26 +08:00

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)
}
}