From 7a5ab52f4c1e06650ff36d3f36ebf29fb1eea86f Mon Sep 17 00:00:00 2001 From: jack Date: Tue, 25 Nov 2025 09:39:36 -1000 Subject: [PATCH] Skip CoreLocation setup in test environments Add isRunningTests check to LocationStateManager to skip CoreLocation delegate and permission initialization in test/CI environments. This prevents potential blocking or unexpected behavior when tests access LocationStateManager.shared. --- bitchat/Services/LocationStateManager.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bitchat/Services/LocationStateManager.swift b/bitchat/Services/LocationStateManager.swift index c8ec79d5..dc7af41f 100644 --- a/bitchat/Services/LocationStateManager.swift +++ b/bitchat/Services/LocationStateManager.swift @@ -59,11 +59,28 @@ final class LocationStateManager: NSObject, CLLocationManagerDelegate, Observabl private var resolvingNames: Set = [] private let storage: UserDefaults + /// Returns true if running in test environment + private static var isRunningTests: Bool { + let env = ProcessInfo.processInfo.environment + return NSClassFromString("XCTestCase") != nil || + env["XCTestConfigurationFilePath"] != nil || + env["XCTestBundlePath"] != nil || + env["GITHUB_ACTIONS"] != nil || + env["CI"] != nil + } + // MARK: - Initialization private override init() { self.storage = .standard super.init() + + // Skip CoreLocation setup in test environments + guard !Self.isRunningTests else { + loadPersistedState() + return + } + cl.delegate = self cl.desiredAccuracy = kCLLocationAccuracyHundredMeters cl.distanceFilter = TransportConfig.locationDistanceFilterMeters