Skip to content

Commit c0560c2

Browse files
fix: setProviderAndWait does not hang on ProviderError event
1 parent 3ce6b8d commit c0560c2

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

Sources/OpenFeature/OpenFeatureAPI.swift

+3
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ extension OpenFeatureAPI {
100100
continuation.resume()
101101
holder.removeAll()
102102
}
103+
if $0 == .error {
104+
return
105+
}
103106
}
104107
stateObserver.store(in: &holder)
105108
setProvider(provider: provider, initialContext: initialContext)

Tests/OpenFeatureTests/Helpers/DoSomethingProvider.swift

+4
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,8 @@ class DoSomethingProvider: FeatureProvider {
6565
public struct DoMetadata: ProviderMetadata {
6666
public var name: String? = DoSomethingProvider.name
6767
}
68+
69+
func initWithError() {
70+
eventHandler.send(.error)
71+
}
6872
}

Tests/OpenFeatureTests/ProviderEventsTests.swift

+16
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,20 @@ final class ProviderEventsTests: XCTestCase {
1919
wait(for: [readyExpectation], timeout: 5)
2020
XCTAssertNotNil(eventState)
2121
}
22+
23+
func testErrorEventSent() {
24+
provider.initWithError()
25+
let errorExpectation = XCTestExpectation(description: "Error")
26+
let eventState = provider
27+
.observe()
28+
.filter { event in
29+
event == ProviderEvent.error
30+
}
31+
.sink { _ in
32+
errorExpectation.fulfill()
33+
}
34+
OpenFeatureAPI.shared.setProvider(provider: provider)
35+
wait(for: [errorExpectation], timeout: 5)
36+
XCTAssertNotNil(eventState)
37+
}
2238
}

0 commit comments

Comments
 (0)