99
1010import plain2code_telemetry
1111from plain2code_state import RunState
12- from plain2code_telemetry import NO_TELEMETRY_ENV_VAR , capture_crash , initialize_telemetry , telemetry_enabled
12+ from plain2code_telemetry import TELEMETRY_ENV_VAR , capture_crash , initialize_telemetry , telemetry_enabled
1313
1414
1515class CaptureTransport (Transport ):
@@ -47,7 +47,10 @@ def make_args(**overrides):
4747@pytest .fixture (autouse = True )
4848def clean_telemetry_env (monkeypatch ):
4949 """Ensure tests are not affected by the developer's environment and never send real events."""
50- monkeypatch .delenv (NO_TELEMETRY_ENV_VAR , raising = False )
50+ monkeypatch .delenv (TELEMETRY_ENV_VAR , raising = False )
51+ # Tests run from a source checkout (a dev environment, where telemetry is
52+ # off by default); pretend to be production so the default path is covered.
53+ monkeypatch .setattr (plain2code_telemetry .system_config , "environment" , "production" )
5154 yield
5255 client = sentry_sdk .get_client ()
5356 if client .is_active ():
@@ -63,15 +66,33 @@ def init_with_transport(transport):
6366 assert initialize_telemetry (transport = transport )
6467
6568
66- def test_no_telemetry_env_var_disables (monkeypatch , transport ):
67- monkeypatch .setenv (NO_TELEMETRY_ENV_VAR , "1" )
69+ @pytest .mark .parametrize ("value" , ["0" , "false" , "off" , "OFF" , " False " ])
70+ def test_telemetry_env_var_disables_in_production (monkeypatch , transport , value ):
71+ monkeypatch .setenv (TELEMETRY_ENV_VAR , value )
6872
6973 assert not telemetry_enabled ()
7074 assert not initialize_telemetry (transport = transport )
7175 assert not capture_crash (make_exc_info (KeyError ("boom" )), None , make_args ())
7276 assert transport .events == []
7377
7478
79+ def test_telemetry_disabled_outside_production (monkeypatch , transport ):
80+ monkeypatch .setattr (plain2code_telemetry .system_config , "environment" , "development" )
81+
82+ assert not telemetry_enabled ()
83+ assert not initialize_telemetry (transport = transport )
84+ assert not capture_crash (make_exc_info (KeyError ("boom" )), None , make_args ())
85+ assert transport .events == []
86+
87+
88+ @pytest .mark .parametrize ("value" , ["1" , "true" , "on" , "ON" ])
89+ def test_telemetry_env_var_enables_outside_production (monkeypatch , value ):
90+ monkeypatch .setattr (plain2code_telemetry .system_config , "environment" , "development" )
91+ monkeypatch .setenv (TELEMETRY_ENV_VAR , value )
92+
93+ assert telemetry_enabled ()
94+
95+
7596def test_capture_crash_sends_event_with_tags (transport ):
7697 init_with_transport (transport )
7798
@@ -198,6 +219,7 @@ def test_environment_comes_from_system_config(transport):
198219
199220def test_environment_follows_system_config (monkeypatch , transport ):
200221 monkeypatch .setattr (plain2code_telemetry .system_config , "environment" , "staging" )
222+ monkeypatch .setenv (TELEMETRY_ENV_VAR , "1" )
201223 init_with_transport (transport )
202224 assert sentry_sdk .get_client ().options ["environment" ] == "staging"
203225
0 commit comments