summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_traceback.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_traceback.py')
-rw-r--r--Lib/test/test_traceback.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index cf52d17..56b1687 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -804,6 +804,56 @@ class TracebackErrorLocationCaretTestBase:
]
self.assertEqual(actual, expected)
+ def test_wide_characters_unicode_with_problematic_byte_offset(self):
+ def f():
+ width
+
+ actual = self.get_exception(f)
+ expected = [
+ f"Traceback (most recent call last):",
+ f" File \"{__file__}\", line {self.callable_line}, in get_exception",
+ f" callable()",
+ f" File \"{__file__}\", line {f.__code__.co_firstlineno + 1}, in f",
+ f" width",
+ ]
+ self.assertEqual(actual, expected)
+
+
+ def test_byte_offset_with_wide_characters_middle(self):
+ def f():
+ width = 1
+ raise ValueError(width)
+
+ actual = self.get_exception(f)
+ expected = [
+ f"Traceback (most recent call last):",
+ f" File \"{__file__}\", line {self.callable_line}, in get_exception",
+ f" callable()",
+ f" File \"{__file__}\", line {f.__code__.co_firstlineno + 2}, in f",
+ f" raise ValueError(width)",
+ ]
+ self.assertEqual(actual, expected)
+
+ def test_byte_offset_multiline(self):
+ def f():
+ www = 1
+ th = 0
+
+ print(1, www(
+ th))
+
+ actual = self.get_exception(f)
+ expected = [
+ f"Traceback (most recent call last):",
+ f" File \"{__file__}\", line {self.callable_line}, in get_exception",
+ f" callable()",
+ f" File \"{__file__}\", line {f.__code__.co_firstlineno + 4}, in f",
+ f" print(1, www(",
+ f" ^^^^",
+ ]
+ self.assertEqual(actual, expected)
+
+
@requires_debug_ranges()
class PurePythonTracebackErrorCaretTests(