@@ -155,3 +155,41 @@ def test_empty_write():
155155 assert written == 0
156156 assert builder .n_chars == 0
157157 assert not builder .is_full
158+
159+
160+ def test_tail_empty ():
161+ builder = ToolResultBuilder ()
162+ assert builder .tail () == ""
163+
164+
165+ def test_tail_basic ():
166+ builder = ToolResultBuilder ()
167+ builder .write ("first line\n second line\n third line\n " )
168+ assert builder .tail () == "first line\n second line\n third line"
169+
170+
171+ def test_tail_skips_blank_lines ():
172+ builder = ToolResultBuilder ()
173+ builder .write ("real error\n \n \n " )
174+ assert builder .tail () == "real error"
175+
176+
177+ def test_tail_respects_max_lines ():
178+ builder = ToolResultBuilder ()
179+ builder .write ("\n " .join (f"line { i } " for i in range (10 )) + "\n " )
180+ assert builder .tail (max_lines = 3 ) == "line 7\n line 8\n line 9"
181+
182+
183+ def test_tail_truncates_long_line ():
184+ builder = ToolResultBuilder ()
185+ builder .write ("x" * 500 + "\n " )
186+ tail = builder .tail (max_line_len = 100 )
187+ assert tail .endswith ("..." )
188+ assert len (tail ) == 103
189+
190+
191+ def test_tail_handles_multiple_writes ():
192+ builder = ToolResultBuilder ()
193+ builder .write ("stdout chunk\n " )
194+ builder .write ("stderr: permission denied\n " )
195+ assert builder .tail (max_lines = 2 ) == "stdout chunk\n stderr: permission denied"
0 commit comments