gh-139246: zero-width word paste can be wrong in default repl (GH-139254)

Signed-off-by: yihong0618 <zouzou0208@gmail.com>
Co-authored-by: grayjk <grayjk@gmail.com>
This commit is contained in:
yihong 2025-10-30 23:14:06 +08:00 committed by GitHub
parent a3ce2f77f0
commit 4e6dba0ef7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 1 deletions

View file

@ -5,10 +5,29 @@
class TestUtils(TestCase):
def test_str_width(self):
characters = ['a', '1', '_', '!', '\x1a', '\u263A', '\uffb9']
characters = [
'a',
'1',
'_',
'!',
'\x1a',
'\u263A',
'\uffb9',
'\N{LATIN SMALL LETTER E WITH ACUTE}', # é
'\N{LATIN SMALL LETTER E WITH CEDILLA}', # ȩ
'\u00ad',
]
for c in characters:
self.assertEqual(str_width(c), 1)
zero_width_characters = [
'\N{COMBINING ACUTE ACCENT}',
'\N{ZERO WIDTH JOINER}',
]
for c in zero_width_characters:
with self.subTest(character=c):
self.assertEqual(str_width(c), 0)
characters = [chr(99989), chr(99999)]
for c in characters:
self.assertEqual(str_width(c), 2)
@ -25,6 +44,8 @@ def test_wlen(self):
self.assertEqual(wlen('hello'), 5)
self.assertEqual(wlen('hello' + '\x1a'), 7)
self.assertEqual(wlen('e\N{COMBINING ACUTE ACCENT}'), 1)
self.assertEqual(wlen('a\N{ZERO WIDTH JOINER}b'), 2)
def test_prev_next_window(self):
def gen_normal():