gh-131507: Add support for syntax highlighting in PyREPL (GH-133247)

Co-authored-by: Victorien <65306057+Viicos@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
This commit is contained in:
Łukasz Langa 2025-05-02 20:22:31 +02:00 committed by GitHub
parent bfcbb28223
commit fac41f56d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 654 additions and 99 deletions

View file

@ -1,6 +1,6 @@
from unittest import TestCase
from _pyrepl.utils import str_width, wlen
from _pyrepl.utils import str_width, wlen, prev_next_window
class TestUtils(TestCase):
@ -25,3 +25,38 @@ def test_wlen(self):
self.assertEqual(wlen('hello'), 5)
self.assertEqual(wlen('hello' + '\x1a'), 7)
def test_prev_next_window(self):
def gen_normal():
yield 1
yield 2
yield 3
yield 4
pnw = prev_next_window(gen_normal())
self.assertEqual(next(pnw), (None, 1, 2))
self.assertEqual(next(pnw), (1, 2, 3))
self.assertEqual(next(pnw), (2, 3, 4))
self.assertEqual(next(pnw), (3, 4, None))
with self.assertRaises(StopIteration):
next(pnw)
def gen_short():
yield 1
pnw = prev_next_window(gen_short())
self.assertEqual(next(pnw), (None, 1, None))
with self.assertRaises(StopIteration):
next(pnw)
def gen_raise():
yield from gen_normal()
1/0
pnw = prev_next_window(gen_raise())
self.assertEqual(next(pnw), (None, 1, 2))
self.assertEqual(next(pnw), (1, 2, 3))
self.assertEqual(next(pnw), (2, 3, 4))
self.assertEqual(next(pnw), (3, 4, None))
with self.assertRaises(ZeroDivisionError):
next(pnw)