@@ -120,3 +120,39 @@ def function() -> str:
120
120
"tool_f" ,
121
121
]
122
122
assert tru_tool_names == exp_tool_names
123
+
124
+
125
+ def test_register_tool_duplicate_name_without_hot_reload ():
126
+ """Test that registering a tool with duplicate name raises ValueError when hot reload is not supported."""
127
+ tool_1 = PythonAgentTool (tool_name = "duplicate_tool" , tool_spec = MagicMock (), tool_func = lambda : None )
128
+ tool_2 = PythonAgentTool (tool_name = "duplicate_tool" , tool_spec = MagicMock (), tool_func = lambda : None )
129
+
130
+ tool_registry = ToolRegistry ()
131
+ tool_registry .register_tool (tool_1 )
132
+
133
+ with pytest .raises (
134
+ ValueError , match = "Tool name 'duplicate_tool' already exists. Cannot register tools with exact same name."
135
+ ):
136
+ tool_registry .register_tool (tool_2 )
137
+
138
+
139
+ def test_register_tool_duplicate_name_with_hot_reload ():
140
+ """Test that registering a tool with duplicate name succeeds when hot reload is supported."""
141
+ # Create mock tools with hot reload support
142
+ tool_1 = MagicMock (spec = PythonAgentTool )
143
+ tool_1 .tool_name = "hot_reload_tool"
144
+ tool_1 .supports_hot_reload = True
145
+ tool_1 .is_dynamic = False
146
+
147
+ tool_2 = MagicMock (spec = PythonAgentTool )
148
+ tool_2 .tool_name = "hot_reload_tool"
149
+ tool_2 .supports_hot_reload = True
150
+ tool_2 .is_dynamic = False
151
+
152
+ tool_registry = ToolRegistry ()
153
+ tool_registry .register_tool (tool_1 )
154
+
155
+ tool_registry .register_tool (tool_2 )
156
+
157
+ # Verify the second tool replaced the first
158
+ assert tool_registry .registry ["hot_reload_tool" ] == tool_2
0 commit comments