diff --git a/libs/core/tests/unit_tests/callbacks/test_sync_callback_manager.py b/libs/core/tests/unit_tests/callbacks/test_sync_callback_manager.py index d8b3aab6001..44076c8460a 100644 --- a/libs/core/tests/unit_tests/callbacks/test_sync_callback_manager.py +++ b/libs/core/tests/unit_tests/callbacks/test_sync_callback_manager.py @@ -13,3 +13,24 @@ def test_remove_handler() -> None: manager = BaseCallbackManager([handler1], inheritable_handlers=[handler2]) manager.remove_handler(handler1) manager.remove_handler(handler2) + + +def test_merge_preserves_handler_distinction() -> None: + """Test that merging managers preserves the distinction between handlers. + + This test verifies the correct behavior of the BaseCallbackManager.merge() + method. When two managers are merged, their handlers and + inheritable_handlers should be combined independently. + """ + h1 = BaseCallbackHandler() + h2 = BaseCallbackHandler() + ih1 = BaseCallbackHandler() + ih2 = BaseCallbackHandler() + + m1 = BaseCallbackManager(handlers=[h1], inheritable_handlers=[ih1]) + m2 = BaseCallbackManager(handlers=[h2], inheritable_handlers=[ih2]) + + merged = m1.merge(m2) + + assert set(merged.handlers) == {h1, h2} + assert set(merged.inheritable_handlers) == {ih1, ih2}