8000 bpo-43016: Fix test_curses on platform without cursesw (GH-24405) (GH… · python/cpython@aab84a5 · GitHub
[go: up one dir, main page]

Skip to content

Commit aab84a5

Browse files
bpo-43016: Fix test_curses on platform without cursesw (GH-24405) (GH-24408)
(cherry picked from commit a1e9a1e) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 931263b commit aab84a5

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

Lib/test/test_curses.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,21 @@ def test_refresh_control(self):
239239

240240
def test_output_character(self):
241241
stdscr = self.stdscr
242+
encoding = stdscr.encoding
242243
# addch()
243244
stdscr.refresh()
244245
stdscr.move(0, 0)
245246
stdscr.addch('A')
246247
stdscr.addch(b'A')
247248
stdscr.addch(65)
248-
stdscr.addch('\u20ac')
249+
c = '\u20ac'
250+
try:
251+
stdscr.addch(c)
252+
except UnicodeEncodeError:
253+
self.assertRaises(UnicodeEncodeError, c.encode, encoding)
254+
except OverflowError:
255+
encoded = c.encode(encoding)
256+
self.assertNotEqual(len(encoded), 1, repr(encoded))
249257
stdscr.addch('A', curses.A_BOLD)
250258
stdscr.addch(1, 2, 'A')
251259
stdscr.addch(2, 3, 'A', curses.A_BOLD)
@@ -257,19 +265,25 @@ def test_output_character(self):
257265
stdscr.echochar('A')
258266
stdscr.echochar(b'A')
259267
stdscr.echochar(65)
260-
self.assertRaises(OverflowError, stdscr.echochar, '\u20ac')
268+
with self.assertRaises((UnicodeEncodeError, OverflowError)):
269+
stdscr.echochar('\u20ac')
261270
stdscr.echochar('A', curses.A_BOLD)
262271
self.assertIs(stdscr.is_wintouched(), False)
263272

264273
def test_output_string(self):
265274
stdscr = self.stdscr
275+
encoding = stdscr.encoding
266276
# addstr()/insstr()
267277
for func in [stdscr.addstr, stdscr.insstr]:
268278
with self.subTest(func.__qualname__):
269279
stdscr.move(0, 0)
270280
func('abcd')
271281
func(b'abcd')
272-
func('àßçđ')
282+
s = 'àßçđ'
283+
try:
284+
func(s)
285+
except UnicodeEncodeError:
286+
self.assertRaises(UnicodeEncodeError, s.encode, encoding)
273287
func('abcd', curses.A_BOLD)
274288
func(1, 2, 'abcd')
275289
func(2, 3, 'abcd', curses.A_BOLD)
@@ -280,7 +294,11 @@ def test_output_string(self):
280294
stdscr.move(0, 0)
281295
func('1234', 3)
282296
func(b'1234', 3)
283-
func('\u0661\u0662\u0663\u0664', 3)
297+
s = '\u0661\u0662\u0663\u0664'
298+
try:
299+
func(s, 3)
300+
except UnicodeEncodeError:
301+
self.assertRaises(UnicodeEncodeError, s.encode, encoding)
284302
func('1234', 5)
285303
func('1234', 3, curses.A_BOLD)
286304
func(1, 2, '1234', 3)
@@ -470,7 +488,7 @@ def test_background(self):
470488
win = curses.newwin(5, 15, 5, 2)
471489
win.addstr(0, 0, 'Lorem ipsum')
472490

473-
self.assertEqual(win.getbkgd(), 0)
491+
self.assertIn(win.getbkgd(), (0, 32))
474492

475493
# bkgdset()
476494
win.bkgdset('_')

0 commit comments

Comments
 (0)
0