diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index 15745d522..a5f021abc 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -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__":