1717from google .api_core .feature_gating_helpers import (
1818 _get_env_bool ,
1919 _strtobool ,
20- clear_test_env_overrides ,
21- set_test_env_override ,
2220)
2321
2422
25- @pytest .fixture (autouse = True )
26- def clean_overrides ():
27- yield
28- clear_test_env_overrides ()
29-
30-
3123@pytest .mark .parametrize (
3224 "value,expected" ,
3325 [
@@ -74,30 +66,12 @@ def test_get_env_bool(monkeypatch):
7466 assert _get_env_bool ("TEST_VAR" ) is None
7567
7668
77- def test_set_test_env_override_clear_specific ():
78- """Verify that setting an override to None clears that specific override.
79-
80- This is important to ensure tests can reset individual environment overrides
81- without affecting other overrides that might be set for other tests running
82- concurrently or subsequently.
83- """
84- set_test_env_override ("TEST_A" , True )
85- set_test_env_override ("TEST_B" , True )
86- assert _get_env_bool ("TEST_A" ) is True
87- assert _get_env_bool ("TEST_B" ) is True
8869
89- # Clear only TEST_A
90- set_test_env_override ("TEST_A" , None )
9170
92- # Verify TEST_A is cleared but TEST_B remains
93- assert _get_env_bool ("TEST_A" ) is None
94- assert _get_env_bool ("TEST_B" ) is True
95-
96-
97- def test_resolve_feature_flags_ga_enabled_via_env ():
71+ def test_resolve_feature_flags_ga_enabled_via_env (monkeypatch ):
9872 """Verify that a GA feature is enabled if its environment variable is True."""
9973 # Setup: We pass a GA environment variable set to True
100- set_test_env_override ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , True )
74+ monkeypatch . setenv ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , "true" )
10175
10276 # Action
10377 result = feature_gating_helpers .resolve_feature_flags (
@@ -110,13 +84,14 @@ def test_resolve_feature_flags_ga_enabled_via_env():
11084 assert result is True
11185
11286
113- @pytest .mark .parametrize ("exp_env_state" , [None , False ], ids = ["missing" , "disabled" ])
114- def test_resolve_feature_flags_exp_blocked_with_provider_fails_fast (exp_env_state ):
87+ @pytest .mark .parametrize ("exp_env_state" , [None , "false" ], ids = ["missing" , "disabled" ])
88+ def test_resolve_feature_flags_exp_blocked_with_provider_fails_fast (monkeypatch , exp_env_state ):
11589 """Verify that passing a provider to an experimental feature raises ValueError if the experimental environment variable is disabled or missing."""
11690 # Setup: Experimental env var is set to exp_env_state (None means not set)
117- set_test_env_override (
118- "GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , exp_env_state
119- )
91+ if exp_env_state is not None :
92+ monkeypatch .setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , exp_env_state )
93+ else :
94+ monkeypatch .delenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , raising = False )
12095 client_options = {"tracer_provider" : object ()}
12196
12297 # Action & Assertion
@@ -128,9 +103,9 @@ def test_resolve_feature_flags_exp_blocked_with_provider_fails_fast(exp_env_stat
128103 )
129104
130105
131- def test_resolve_feature_flags_exp_enabled_with_provider ():
106+ def test_resolve_feature_flags_exp_enabled_with_provider (monkeypatch ):
132107 """Verify that experimental feature is enabled if the experimental environment variable is enabled and a provider is provided."""
133- set_test_env_override ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , True )
108+ monkeypatch . setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
134109 client_options = {"tracer_provider" : object ()}
135110
136111 result = feature_gating_helpers .resolve_feature_flags (
@@ -141,9 +116,9 @@ def test_resolve_feature_flags_exp_enabled_with_provider():
141116 assert result is True
142117
143118
144- def test_resolve_feature_flags_exp_enabled_without_provider ():
119+ def test_resolve_feature_flags_exp_enabled_without_provider (monkeypatch ):
145120 """Verify that experimental feature is enabled if the experimental environment variable is enabled and NO provider is provided."""
146- set_test_env_override ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , True )
121+ monkeypatch . setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "true" )
147122
148123 result = feature_gating_helpers .resolve_feature_flags (
149124 env_var = "GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" ,
@@ -153,9 +128,9 @@ def test_resolve_feature_flags_exp_enabled_without_provider():
153128 assert result is True
154129
155130
156- def test_resolve_feature_flags_exp_disabled_without_provider ():
131+ def test_resolve_feature_flags_exp_disabled_without_provider (monkeypatch ):
157132 """Verify that experimental feature is disabled if the experimental environment variable is disabled and NO provider is provided."""
158- set_test_env_override ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , False )
133+ monkeypatch . setenv ("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" , "false" )
159134
160135 result = feature_gating_helpers .resolve_feature_flags (
161136 env_var = "GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED" ,
@@ -165,10 +140,10 @@ def test_resolve_feature_flags_exp_disabled_without_provider():
165140 assert result is False
166141
167142
168- def test_resolve_feature_flags_ga_enabled_via_provider ():
143+ def test_resolve_feature_flags_ga_enabled_via_provider (monkeypatch ):
169144 """Verify that a GA feature is enabled if a provider is provided, ignoring the environment variable."""
170145 # Env var is False, but provider is present
171- set_test_env_override ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , False )
146+ monkeypatch . setenv ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , "false" )
172147 client_options = {"tracer_provider" : object ()}
173148
174149 result = feature_gating_helpers .resolve_feature_flags (
@@ -180,11 +155,14 @@ def test_resolve_feature_flags_ga_enabled_via_provider():
180155
181156
182157@pytest .mark .parametrize (
183- "env_val" , [None , False ], ids = ["env_not_set" , "env_explicit_false" ]
158+ "env_val" , [None , "false" ], ids = ["env_not_set" , "env_explicit_false" ]
184159)
185- def test_resolve_feature_flags_ga_fallback_to_false (env_val ):
160+ def test_resolve_feature_flags_ga_fallback_to_false (monkeypatch , env_val ):
186161 """Verify that a GA feature is disabled if neither a provider is provided nor the environment variable is enabled."""
187- set_test_env_override ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , env_val )
162+ if env_val is not None :
163+ monkeypatch .setenv ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , env_val )
164+ else :
165+ monkeypatch .delenv ("GOOGLE_SDK_PYTHON_TRACING_ENABLED" , raising = False )
188166 result = feature_gating_helpers .resolve_feature_flags (
189167 env_var = "GOOGLE_SDK_PYTHON_TRACING_ENABLED" ,
190168 provider_key = "tracer_provider" ,
0 commit comments