chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import CodexBarCore
|
||||
import Foundation
|
||||
import Testing
|
||||
@testable import CodexBarCLI
|
||||
|
||||
#if canImport(SQLite3)
|
||||
import SQLite3
|
||||
#elseif canImport(CSQLite3)
|
||||
import CSQLite3
|
||||
#endif
|
||||
|
||||
#if canImport(SQLite3) || canImport(CSQLite3)
|
||||
@Suite
|
||||
struct OpenCodeGoLinuxTests {
|
||||
@Test
|
||||
func autoSourceDoesNotRequireWebSupport() {
|
||||
#expect(!CodexBarCLI.sourceModeRequiresWebSupport(.auto, provider: .opencodego))
|
||||
#expect(CodexBarCLI.sourceModeRequiresWebSupport(.web, provider: .opencodego))
|
||||
}
|
||||
|
||||
@Test
|
||||
func commandCodeManualCookieDoesNotRequireMacOSWebSupport() {
|
||||
let settings = ProviderSettingsSnapshot.make(
|
||||
commandcode: .init(cookieSource: .manual, manualCookieHeader: "session=manual"))
|
||||
|
||||
#expect(!CodexBarCLI.sourceModeRequiresWebSupport(
|
||||
.auto,
|
||||
provider: .commandcode,
|
||||
settings: settings))
|
||||
#expect(!CodexBarCLI.sourceModeRequiresWebSupport(
|
||||
.web,
|
||||
provider: .commandcode,
|
||||
settings: settings))
|
||||
}
|
||||
|
||||
@Test
|
||||
func localReaderLoadsOpenCodeDatabase() throws {
|
||||
let root = FileManager.default.temporaryDirectory
|
||||
.appendingPathComponent("OpenCodeGoLinuxTests-\(UUID().uuidString)", isDirectory: true)
|
||||
defer { try? FileManager.default.removeItem(at: root) }
|
||||
try FileManager.default.createDirectory(at: root, withIntermediateDirectories: true)
|
||||
|
||||
let databaseURL = root.appendingPathComponent("opencode.db")
|
||||
let authURL = root.appendingPathComponent("auth.json")
|
||||
let now = Date(timeIntervalSince1970: 1_800_000_000)
|
||||
let createdMs = Int64((now.timeIntervalSince1970 - 60) * 1000)
|
||||
try Self.createDatabase(at: databaseURL, createdMs: createdMs)
|
||||
|
||||
let snapshot = try OpenCodeGoLocalUsageReader(authURL: authURL, databaseURL: databaseURL).fetch(now: now)
|
||||
|
||||
#expect(snapshot.rollingUsagePercent == 50)
|
||||
#expect(snapshot.weeklyUsagePercent == 20)
|
||||
#expect(snapshot.monthlyUsagePercent == 10)
|
||||
}
|
||||
|
||||
private static func createDatabase(at url: URL, createdMs: Int64) throws {
|
||||
var database: OpaquePointer?
|
||||
guard sqlite3_open(url.path, &database) == SQLITE_OK else {
|
||||
sqlite3_close(database)
|
||||
throw OpenCodeGoLocalUsageError.sqliteFailed("open failed")
|
||||
}
|
||||
defer { sqlite3_close(database) }
|
||||
|
||||
let data = "{\"time\":{\"created\":\(createdMs)},\"cost\":6,\"providerID\":\"opencode-go\",\"role\":\"assistant\"}"
|
||||
let sql = """
|
||||
CREATE TABLE message (id TEXT PRIMARY KEY, time_created INTEGER NOT NULL, data TEXT NOT NULL);
|
||||
INSERT INTO message (id, time_created, data) VALUES ('message-1', \(createdMs), '\(data)');
|
||||
"""
|
||||
guard sqlite3_exec(database, sql, nil, nil, nil) == SQLITE_OK else {
|
||||
throw OpenCodeGoLocalUsageError.sqliteFailed("fixture creation failed")
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user