34 lines
1.9 KiB
Swift
34 lines
1.9 KiB
Swift
import Foundation
|
|
|
|
@main struct LogTests {
|
|
@MainActor static func main() throws {
|
|
let root = URL(fileURLWithPath: ProcessInfo.processInfo.environment["TARNAX_SCRATCH_ROOT"]!).appendingPathComponent("log-tests-" + UUID().uuidString)
|
|
defer { try? FileManager.default.removeItem(at: root) }
|
|
let url = root.appendingPathComponent("activity.json")
|
|
let first = AppLogStore(url: url)
|
|
precondition(first.entries.isEmpty)
|
|
let time = Date()
|
|
first.record("Connected.", at: time)
|
|
first.record("Connected.", at: time.addingTimeInterval(1))
|
|
precondition(first.entries.count == 1 && first.entries[0].count == 2)
|
|
let restored = AppLogStore(url: url)
|
|
precondition(restored.entries.count == 1 && restored.entries[0].count == 2)
|
|
let privateURL = URL(string: "https://user:secret@example.test/private?token=secret")!
|
|
restored.failure(URLError(.timedOut, userInfo: [NSURLErrorFailingURLErrorKey: privateURL]), context: "Server request")
|
|
let archive = try String(contentsOf: url, encoding: .utf8)
|
|
precondition(!archive.contains("secret") && !archive.contains("example.test"))
|
|
for index in 0...1000 { restored.record("Event \(index)") }
|
|
precondition(restored.entries.count == AppLogStore.capacity)
|
|
precondition(AppLogStore(url: url).entries.count == AppLogStore.capacity)
|
|
restored.clear()
|
|
precondition(restored.entries.isEmpty && !FileManager.default.fileExists(atPath: url.path))
|
|
precondition(AppLogStore(url: url).entries.isEmpty)
|
|
let blocker = root.appendingPathComponent("blocked")
|
|
try Data("blocked".utf8).write(to: blocker)
|
|
let failed = AppLogStore(url: blocker.appendingPathComponent("log.json"))
|
|
failed.record("Cannot save.")
|
|
precondition(failed.storageError != nil)
|
|
print("Log persistence, grouping, capacity, privacy, clear/reload and storage failure checks passed.")
|
|
}
|
|
}
|