Skip to content

Commit 54340e2

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

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
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

+12-1
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,23 @@ 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: 2)
7777
initCompleteExpectation.fulfill()
7878
}
79+
80+
let errorProviderExpectation = XCTestExpectation()
81+
let brokenProvider = AlwaysBrokenProvider()
82+
Task {
83+
await OpenFeatureAPI.shared.setProviderAndWait(provider: brokenProvider)
84+
wait(for: [errorExpectation], timeout: 2)
85+
errorProviderExpectation.fulfill()
86+
}
87+
7988
wait(for: [staleExpectation], timeout: 1)
8089
eventHandler.send(.ready)
8190
wait(for: [initCompleteExpectation], timeout: 2)
91+
eventHandler.send(.error)
92+
wait(for: [errorProviderExpectation], timeout: 2)
8293
}
8394
}
8495

0 commit comments

Comments
 (0)