Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f4200c8

Browse files
committedJan 30, 2024
fix: setProviderAndWait does not hang on ProviderError event
Signed-off-by: Nicky Bondarenko <[email protected]>
1 parent 3ce6b8d commit f4200c8

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed
 

‎Sources/OpenFeature/OpenFeatureAPI.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ extension OpenFeatureAPI {
9696
var holder: [AnyCancellable] = []
9797
await withCheckedContinuation { continuation in
9898
let stateObserver = provider.observe().sink {
99-
if $0 == .ready {
99+
if $0 == .ready || $0 == .error {
100100
continuation.resume()
101101
holder.removeAll()
102102
}

‎Tests/OpenFeatureTests/DeveloperExperienceTests.swift

+14-2
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,24 @@ final class DeveloperExperienceTests: XCTestCase {
7373
let provider = InjectableEventHandlerProvider(eventHandler: eventHandler)
7474
Task {
7575
await OpenFeatureAPI.shared.setProviderAndWait(provider: provider)
76-
wait(for: [readyExpectation], timeout: 0)
76+
wait(for: [readyExpectation], timeout: 1)
7777
initCompleteExpectation.fulfill()
7878
}
79+
7980
wait(for: [staleExpectation], timeout: 1)
8081
eventHandler.send(.ready)
81-
wait(for: [initCompleteExpectation], timeout: 2)
82+
wait(for: [initCompleteExpectation], timeout: 1)
83+
84+
let errorProviderExpectation = XCTestExpectation()
85+
let brokenProvider = AlwaysBrokenProvider()
86+
Task {
87+
await OpenFeatureAPI.shared.setProviderAndWait(provider: brokenProvider)
88+
wait(for: [errorExpectation], timeout: 2)
89+
errorProviderExpectation.fulfill()
90+
}
91+
92+
eventHandler.send(.error)
93+
wait(for: [errorProviderExpectation], timeout: 2)
8294
}
8395
}
8496

0 commit comments

Comments
 (0)
Please sign in to comment.