@@ -1002,6 +1002,89 @@ def test_enable_integration(sentry_init):
10021002 assert "gnu_backtrace" in client .integrations
10031003
10041004
1005+ def test_enable_enabled_integration (sentry_init ):
1006+ from sentry_sdk .integrations .gnu_backtrace import GnuBacktraceIntegration
1007+
1008+ sentry_init (integrations = [GnuBacktraceIntegration ()])
1009+
1010+ assert "gnu_backtrace" in get_client ().integrations
1011+
1012+ # Second call should not raise or cause issues
1013+ sentry_sdk .enable_integration (GnuBacktraceIntegration ())
1014+ assert "gnu_backtrace" in get_client ().integrations
1015+
1016+
1017+ def test_enable_integration_twice (sentry_init ):
1018+ sentry_init ()
1019+
1020+ from sentry_sdk .integrations .gnu_backtrace import GnuBacktraceIntegration
1021+
1022+ assert "gnu_backtrace" not in get_client ().integrations
1023+
1024+ sentry_sdk .enable_integration (GnuBacktraceIntegration ())
1025+ assert "gnu_backtrace" in get_client ().integrations
1026+
1027+ # Second call should not raise or cause issues
1028+ sentry_sdk .enable_integration (GnuBacktraceIntegration ())
1029+ assert "gnu_backtrace" in get_client ().integrations
1030+
1031+
1032+ def test_enable_integration_did_not_enable (sentry_init ):
1033+ sentry_init ()
1034+
1035+ class FailingIntegration (Integration ):
1036+ identifier = "failing_test_integration"
1037+
1038+ @staticmethod
1039+ def setup_once ():
1040+ raise DidNotEnable ("This integration cannot be enabled" )
1041+
1042+ sentry_sdk .enable_integration (FailingIntegration ())
1043+
1044+ assert "failing_test_integration" not in get_client ().integrations
1045+
1046+
1047+ def test_enable_integration_setup_once_called (sentry_init ):
1048+ sentry_init ()
1049+
1050+ setup_called = []
1051+
1052+ class TrackingIntegration (Integration ):
1053+ identifier = "tracking_test_integration"
1054+
1055+ @staticmethod
1056+ def setup_once ():
1057+ setup_called .append (True )
1058+
1059+ def setup_once_with_options (self , options ):
1060+ setup_called .append (True )
1061+
1062+ assert len (setup_called ) == 0
1063+ sentry_sdk .enable_integration (TrackingIntegration ())
1064+ assert len (setup_called ) == 2
1065+ assert "tracking_test_integration" in get_client ().integrations
1066+
1067+
1068+ def test_enable_integration_setup_once_not_called_twice (sentry_init ):
1069+ sentry_init ()
1070+
1071+ setup_count = []
1072+
1073+ class CountingIntegration (Integration ):
1074+ identifier = "counting_test_integration"
1075+
1076+ @staticmethod
1077+ def setup_once ():
1078+ setup_count .append (1 )
1079+
1080+ sentry_sdk .enable_integration (CountingIntegration ())
1081+ assert len (setup_count ) == 1
1082+
1083+ # Enable again - setup_once should NOT be called
1084+ sentry_sdk .enable_integration (CountingIntegration ())
1085+ assert len (setup_count ) == 1
1086+
1087+
10051088class TracingTestClass :
10061089 @staticmethod
10071090 def static (arg ):
0 commit comments