test: update test to use invalid Unicode that triggers encoding error

This commit is contained in:
Paul Gauthier (aider) 2025-01-11 15:48:05 -08:00
parent 8b6863dc40
commit 571a5962b7

View file

@ -289,20 +289,24 @@ class TestInputOutputMultilineMode(unittest.TestCase):
"""Test that Unicode messages are properly converted to ASCII with replacement"""
io = InputOutput(pretty=False, fancy_input=False)
# Create a message with Unicode characters
unicode_message = "Hello こんにちは Привет"
# Create a message with invalid Unicode that can't be encoded in UTF-8
# Using a surrogate pair that's invalid in UTF-8
invalid_unicode = "Hello \ud800World"
# Mock console.print to capture the output
with patch.object(io.console, "print") as mock_print:
io._tool_message(unicode_message)
# First call will raise UnicodeEncodeError
mock_print.side_effect = [UnicodeEncodeError('utf-8', '', 0, 1, 'invalid'), None]
io._tool_message(invalid_unicode)
# Verify that the message was converted to ASCII with replacement
mock_print.assert_called_once()
self.assertEqual(mock_print.call_count, 2)
args, kwargs = mock_print.call_args
converted_message = args[0]
# The Unicode characters should be replaced with '?'
self.assertEqual(converted_message, "Hello ????? ?????")
# The invalid Unicode should be replaced with '?'
self.assertEqual(converted_message, "Hello ?World")
if __name__ == "__main__":