@@ -11,6 +11,18 @@ import CaptureMocks
1111import Foundation
1212import XCTest
1313
14+ // MARK: - Test Helpers
15+
16+ extension XCTestCase {
17+ /// Creates a unique temporary directory for logger tests to avoid directory lock conflicts.
18+ ///
19+ /// - returns: A unique temporary directory URL
20+ fileprivate func makeTemporaryLoggerDirectory( ) -> URL {
21+ return FileManager . default. temporaryDirectory
22+ . appendingPathComponent ( " bitdrift_test_ \( UUID ( ) . uuidString) " )
23+ }
24+ }
25+
1426// swiftlint:disable file_length
1527private final class URLSessionIncompleteDelegate : NSObject , URLSessionTaskDelegate {
1628 var didCompleteExpectation : XCTestExpectation ?
@@ -23,7 +35,10 @@ private final class URLSessionIncompleteDelegate: NSObject, URLSessionTaskDelega
2335private final class URLSessionCustomDelegate : NSObject , URLSessionDelegate {
2436 var didReceiveChallenge : XCTestExpectation ?
2537
26- func urlSession( _ session: URLSession , didReceive challenge: URLAuthenticationChallenge ) async -> ( URLSession . AuthChallengeDisposition , URLCredential ? ) {
38+ func urlSession(
39+ _ session: URLSession ,
40+ didReceive challenge: URLAuthenticationChallenge
41+ ) async -> ( URLSession . AuthChallengeDisposition , URLCredential ? ) {
2742 self . didReceiveChallenge? . fulfill ( )
2843 return ( . performDefaultHandling, nil )
2944 }
@@ -75,8 +90,13 @@ final class URLSessionIntegrationTests: XCTestCase {
7590 URLSessionIntegration . shared. disableURLSessionTaskSwizzling ( )
7691
7792 Logger . resetShared ( logger: self . logger)
93+
7894 Logger
79- . start ( withAPIKey: " 123 " , sessionStrategy: . fixed( ) ) ?
95+ . start (
96+ withAPIKey: " 123 " ,
97+ sessionStrategy: . fixed( ) ,
98+ configuration: . init( rootFileURL: self . makeTemporaryLoggerDirectory ( ) )
99+ ) ?
80100 . enableIntegrations ( [ . urlSession( ) ] , disableSwizzling: !swizzle)
81101 }
82102
@@ -180,11 +200,16 @@ final class URLSessionIntegrationTests: XCTestCase {
180200 let session = URLSession ( configuration: . background( withIdentifier: " w00t " ) )
181201 let task = session. dataTask ( with: self . makeURL ( ) )
182202
183- let logRequestExpectation = self . expectation ( description: " request logged " )
203+ let logRequestExpectation = self . expectation (
204+ description: " request logged "
205+ )
184206 self . logger. logRequestExpectation = logRequestExpectation
185207 task. resume ( )
186208
187- XCTAssertEqual ( . completed, XCTWaiter ( ) . wait ( for: [ logRequestExpectation] , timeout: 3 , enforceOrder: false ) )
209+ XCTAssertEqual (
210+ . completed,
211+ XCTWaiter ( ) . wait ( for: [ logRequestExpectation] , timeout: 3 , enforceOrder: false )
212+ )
188213 XCTAssertEqual ( 1 , self . logger. logs. count)
189214
190215 let requestInfo = try XCTUnwrap ( self . logger. logs [ 0 ] . request ( ) )
0 commit comments