Skip to content

Commit 13457fe

Browse files
committed
feat: reset default provider on clear_providers and add tests
Signed-off-by: Federico Bond <[email protected]>
1 parent 4d2dfdc commit 13457fe

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

openfeature/provider/registry.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ def get_default_provider(self) -> FeatureProvider:
4444
return self._default_provider
4545

4646
def clear_providers(self) -> None:
47-
for provider in self._providers.values():
48-
provider.shutdown()
47+
self.shutdown()
4948
self._providers.clear()
49+
self._default_provider = NoOpProvider()
5050

5151
def shutdown(self) -> None:
5252
for provider in {self._default_provider, *self._providers.values()}:

tests/test_api.py

+18
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from openfeature.api import (
66
add_hooks,
77
clear_hooks,
8+
clear_providers,
89
get_client,
910
get_evaluation_context,
1011
get_hooks,
@@ -210,3 +211,20 @@ def test_shutdown_should_shutdown_every_registered_provider_once():
210211
# Then
211212
provider_1.shutdown.assert_called_once()
212213
provider_2.shutdown.assert_called_once()
214+
215+
216+
def test_clear_providers_shutdowns_every_provider_and_resets_default_provider():
217+
# Given
218+
provider_1 = MagicMock(spec=FeatureProvider)
219+
provider_2 = MagicMock(spec=FeatureProvider)
220+
set_provider(provider_1)
221+
set_provider(provider_2, "foo")
222+
set_provider(provider_2, "bar")
223+
224+
# When
225+
clear_providers()
226+
227+
# Then
228+
provider_1.shutdown.assert_called_once()
229+
provider_2.shutdown.assert_called_once()
230+
assert isinstance(get_client().provider, NoOpProvider)

0 commit comments

Comments
 (0)