Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/AntigravityLayoutTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,7 @@ final class AntigravityLayoutTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.AntigravityLayout.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.AntigravityLayout.\(name).\(UUID().uuidString)")
}

private func saveStored<T: Encodable>(_ value: T, forKey key: String, in defaults: UserDefaults) {
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/CopilotProviderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -567,10 +567,7 @@ final class CopilotProviderTests: XCTestCase {
}

private func freshDefaults() -> UserDefaults {
let suiteName = "CopilotProviderTests-\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "CopilotProviderTests-\(UUID().uuidString)")
}

private func editorTokenStore() -> CopilotAuthStore {
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/CursorSpendTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -413,10 +413,7 @@ final class CursorSpendProviderTests: XCTestCase {
// MARK: helpers

private func isolatedDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.CursorSpend.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.CursorSpend.\(name).\(UUID().uuidString)")
}

private func isolatedCache(_ defaults: UserDefaults) -> ProviderSnapshotCache {
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/FailureBackoffTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,7 @@ final class FailureBackoffTests: XCTestCase {
}

private func makeUserDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.Backoff.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.Backoff.\(name).\(UUID().uuidString)")
}
}

Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/FirstRunSeederTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -181,10 +181,7 @@ final class FirstRunSeederTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.FirstRunSeeder.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.FirstRunSeeder.\(name).\(UUID().uuidString)")
}
}

Expand Down
3 changes: 1 addition & 2 deletions Tests/OpenUsageTests/LayoutBootstrapTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,7 @@ final class LayoutBootstrapTests: XCTestCase {

private func makePersistence(_ name: String) -> (LayoutPersistence, UserDefaults) {
let suite = "OpenUsageTests.LayoutBootstrap.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suite)!
defaults.removePersistentDomain(forName: suite)
let defaults = makeScratchDefaults(suiteName: suite)
return (LayoutPersistence(defaults: defaults, storageKey: "layout"), defaults)
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/LayoutPersistenceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,6 @@ final class LayoutPersistenceTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suite = "OpenUsageTests.LayoutPersistence.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suite)!
defaults.removePersistentDomain(forName: suite)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.LayoutPersistence.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/LayoutStoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1276,10 +1276,7 @@ final class LayoutStoreTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.LayoutStore.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.LayoutStore.\(name).\(UUID().uuidString)")
}

private func saveStored<T: Encodable>(_ value: T, forKey key: String, in defaults: UserDefaults) {
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/LogLevelSettingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,6 @@ final class LogLevelSettingTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.LogLevel.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.LogLevel.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/MenuBarPinTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,6 @@ final class MenuBarPinTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.MenuBarPin.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.MenuBarPin.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/ModelUsageHoverTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -181,9 +181,6 @@ final class ModelUsageHoverTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.ModelUsageHover.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.ModelUsageHover.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/NewProviderSeederTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,7 @@ final class NewProviderSeederTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.NewProviderSeeder.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.NewProviderSeeder.\(name).\(UUID().uuidString)")
}
}

Expand Down
4 changes: 1 addition & 3 deletions Tests/OpenUsageTests/PopoverScreenTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ final class PopoverScreenTests: XCTestCase {
}

private func makeStore(_ name: String) -> LayoutStore {
let suiteName = "OpenUsageTests.PopoverScreen.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
let defaults = makeScratchDefaults(suiteName: "OpenUsageTests.PopoverScreen.\(name).\(UUID().uuidString)")
return LayoutStore(registry: .mock, defaults: defaults, storageKey: "layout")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/PopoverTransparencyStoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ import XCTest
final class PopoverTransparencyStoreTests: XCTestCase {
/// Isolated, throwaway defaults per test (pattern from `RefreshSettingTests`).
private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.Transparency.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.Transparency.\(name).\(UUID().uuidString)")
}

/// A store on throwaway defaults with the accessibility flags pinned (both off by default), so the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,6 @@ final class ProviderEnablementEnforcementTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.EnablementEnforce.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.EnablementEnforce.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/ProviderEnablementStoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,6 @@ final class ProviderEnablementStoreTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.Enablement.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.Enablement.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/RefreshSettingTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,6 @@ final class RefreshSettingTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.RefreshSetting.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.RefreshSetting.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/StaleWhileRevalidateTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -199,10 +199,7 @@ final class StaleWhileRevalidateTests: XCTestCase {
}

private func makeUserDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.StaleWhileRevalidate.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.StaleWhileRevalidate.\(name).\(UUID().uuidString)")
}
}

Expand Down
4 changes: 1 addition & 3 deletions Tests/OpenUsageTests/StalenessLabelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,7 @@ final class StalenessLabelTests: XCTestCase {
descriptor: WidgetDescriptor,
runtime: some ProviderRuntime
) -> WidgetDataStore {
let suiteName = "OpenUsageTests.Staleness.\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
let defaults = makeScratchDefaults(suiteName: "OpenUsageTests.Staleness.\(UUID().uuidString)")
return WidgetDataStore(
registry: WidgetRegistry(providers: [provider], descriptors: [descriptor]),
providers: [runtime],
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/TelemetryRecorderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,6 @@ final class TelemetryRecorderTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.Telemetry.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.Telemetry.\(name).\(UUID().uuidString)")
}
}
14 changes: 14 additions & 0 deletions Tests/OpenUsageTests/TestSupport.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
import XCTest
@testable import OpenUsage

extension XCTestCase {
/// A `UserDefaults` backed by a throwaway suite that is cleared *now* (so the test starts from a
/// clean slate) and whose persistent domain is removed again in this test's teardown. Use this for
/// any test needing an isolated defaults store: it prevents test data from lingering after the
/// run. Pass a unique `suiteName` (embed a `UUID()`) so parallel or repeated tests don't collide.
/// macOS 27 may still recreate an empty plist shell for a suite when the test process exits.
func makeScratchDefaults(suiteName: String) -> UserDefaults {
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName) // clean slate at start
addTeardownBlock { UserDefaults().removePersistentDomain(forName: suiteName) }
return defaults
}
}

/// The shipped pricing resources (supplement + LiteLLM/models.dev snapshots) as a ready-to-use
/// `ModelPricing` — loaded once, entirely offline (no store, no network, no disk cache). Tests that
/// price real model names use this the way production code uses `ModelPricingStore.current()`.
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/UsageTrendTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,6 @@ final class UsageTrendTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.Trend.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.Trend.\(name).\(UUID().uuidString)")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,7 @@ final class WidgetDataStoreNotificationTests: XCTestCase {
}

private func makeUserDefaults(_ name: String) -> UserDefaults {
let suite = "WidgetDataStoreNotificationTests.\(name)"
let defaults = UserDefaults(suiteName: suite)!
defaults.removePersistentDomain(forName: suite)
return defaults
makeScratchDefaults(suiteName: "WidgetDataStoreNotificationTests.\(name)")
}

private static let provider = Provider(id: "test", displayName: "Test", icon: .providerMark("cursor"))
Expand Down
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/WidgetDataStorePlanTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,6 @@ final class WidgetDataStorePlanTests: XCTestCase {
}

private func makeDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.Plan.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.Plan.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/WidgetDataStoreTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -739,9 +739,6 @@ final class WidgetDataStoreTests: XCTestCase {
}

private func makeUserDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.\(name).\(UUID().uuidString)")
}
}
10 changes: 2 additions & 8 deletions Tests/OpenUsageTests/WidgetMeterStyleTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,7 @@ final class WidgetMeterStyleTests: XCTestCase {
}

func testMeterStylePersistsAcrossStoreInstances() {
let suiteName = "OpenUsageTests.MeterStyle.persist.\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
defer { defaults.removePersistentDomain(forName: suiteName) }
let defaults = makeScratchDefaults(suiteName: "OpenUsageTests.MeterStyle.persist.\(UUID().uuidString)")

let store = makeEmptyStore(defaults)
XCTAssertEqual(store.meterStyle, .remaining)
Expand Down Expand Up @@ -268,9 +265,6 @@ final class WidgetMeterStyleTests: XCTestCase {
}

private func makeUserDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.MeterStyle.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.MeterStyle.\(name).\(UUID().uuidString)")
}
}
5 changes: 1 addition & 4 deletions Tests/OpenUsageTests/WidgetNoDataTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,6 @@ final class WidgetNoDataTests: XCTestCase {
}

private func makeUserDefaults(_ name: String) -> UserDefaults {
let suiteName = "OpenUsageTests.NoData.\(name).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
return defaults
makeScratchDefaults(suiteName: "OpenUsageTests.NoData.\(name).\(UUID().uuidString)")
}
}
4 changes: 1 addition & 3 deletions Tests/OpenUsageTests/WidgetPercentClampTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ final class WidgetPercentClampTests: XCTestCase {
lines: [.progress(label: "Metric", used: used, limit: 100, format: .percent)]
)
)
let suiteName = "OpenUsageTests.PercentClamp.\(suite).\(UUID().uuidString)"
let defaults = UserDefaults(suiteName: suiteName)!
defaults.removePersistentDomain(forName: suiteName)
let defaults = makeScratchDefaults(suiteName: "OpenUsageTests.PercentClamp.\(suite).\(UUID().uuidString)")
let cache = ProviderSnapshotCache(userDefaults: defaults, storageKey: "snapshots", ttl: 600, now: { Date() })
let store = WidgetDataStore(
registry: WidgetRegistry(providers: [provider], descriptors: [descriptor]),
Expand Down