File tree Expand file tree Collapse file tree 2 files changed +38
-0
lines changed
Tests/TUSKitTests/TUSClient Expand file tree Collapse file tree 2 files changed +38
-0
lines changed Original file line number Diff line number Diff line change @@ -733,6 +733,23 @@ extension TUSClient: SchedulerDelegate {
733733 return nil
734734 }
735735 }
736+
737+ func isCancellation( _ error: Error ) -> Bool {
738+ if let tusError = error as? TUSClientError , case . taskCancelled = tusError {
739+ return true
740+ }
741+
742+ if let apiError = error as? TUSAPIError , case let . underlyingError( underlying) = apiError {
743+ return isCancellation ( underlying)
744+ }
745+
746+ if let urlError = error as? URLError , urlError. code == . cancelled {
747+ return true
748+ }
749+
750+ let nsError = error as NSError
751+ return nsError. domain == NSURLErrorDomain && nsError. code == NSURLErrorCancelled
752+ }
736753
737754 var shouldReturnEarly = false
738755 queue. sync {
@@ -747,6 +764,10 @@ extension TUSClient: SchedulerDelegate {
747764 return
748765 }
749766
767+ if isCancellation ( error) {
768+ return
769+ }
770+
750771 metaData. errorCount += 1
751772 do {
752773 try files. encodeAndStore ( metaData: metaData)
Original file line number Diff line number Diff line change @@ -123,4 +123,21 @@ final class TUSClientInternalTests: XCTestCase {
123123 XCTFail ( " Expected a couldNotStoreFileMetadata error " )
124124 }
125125 }
126+
127+ func testCancellationDoesNotIncrementErrorCountOrRetry( ) throws {
128+ let metaData = try storeFiles ( )
129+ let creationTask = try CreationTask ( metaData: metaData,
130+ api: TUSAPI ( session: URLSession ( configuration: . ephemeral) ) ,
131+ files: files)
132+ let scheduler = Scheduler ( )
133+
134+ XCTAssertEqual ( metaData. errorCount, 0 )
135+
136+ client. onError ( error: TUSClientError . taskCancelled, task: creationTask, scheduler: scheduler)
137+
138+ scheduler. queue. sync { }
139+
140+ XCTAssertEqual ( metaData. errorCount, 0 )
141+ XCTAssertTrue ( scheduler. allTasks. isEmpty)
142+ }
126143}
You can’t perform that action at this time.
0 commit comments