Skip to content

Commit 943841d

Browse files
bpo-43016: Fix test_curses on platform without cursesw
1 parent 3243e8a commit 943841d

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
@@ -240,13 +240,21 @@ def test_refresh_control(self):
240240

241241
def test_output_character(self):
242242
stdscr = self.stdscr
243+
encoding = stdscr.encoding
243244
# addch()
244245
stdscr.refresh()
245246
stdscr.move(0, 0)
246247
stdscr.addch('A')
247248
stdscr.addch(b'A')
248249
stdscr.addch(65)
249-
stdscr.addch('\u20ac')
250+
c = '\u20ac'
251+
try:
252+
stdscr.addch(c)
253+
except UnicodeEncodeError:
254+
self.assertRaises(UnicodeEncodeError, c.encode, encoding)
255+
except OverflowError:
256+
encoded = c.encode(encoding)
257+
self.assertNotEqual(len(encoded), 1, repr(encoded))
250258
stdscr.addch('A', curses.A_BOLD)
251259
stdscr.addch(1, 2, 'A')
252260
stdscr.addch(2, 3, 'A', curses.A_BOLD)
@@ -258,19 +266,25 @@ def test_output_character(self):
258266
stdscr.echochar('A')
259267
stdscr.echochar(b'A')
260268
stdscr.echochar(65)
261-
self.assertRaises(OverflowError, stdscr.echochar, '\u20ac')
269+
with self.assertRaises((UnicodeEncodeError, OverflowError)):
270+
stdscr.echochar('\u20ac')
262271
stdscr.echochar('A', curses.A_BOLD)
263272
self.assertIs(stdscr.is_wintouched(), False)
264273

265274
def test_output_string(self):
266275
stdscr = self.stdscr
276+
encoding = stdscr.encoding
267277
# addstr()/insstr()
268278
for func in [stdscr.addstr, stdscr.insstr]:
269279
with self.subTest(func.__qualname__):
270280
stdscr.move(0, 0)
271281
func('abcd')
272282
func(b'abcd')
273-
func('àßçđ')
283+
s = 'àßçđ'
284+
try:
285+
func(s)
286+
except UnicodeEncodeError:
287+
self.assertRaises(UnicodeEncodeError, s.encode, encoding)
274288
func('abcd', curses.A_BOLD)
275289
func(1, 2, 'abcd')
276290
func(2, 3, 'abcd', curses.A_BOLD)
@@ -281,7 +295,11 @@ def test_output_string(self):
281295
stdscr.move(0, 0)
282296
func('1234', 3)
283297
func(b'1234', 3)
284-
func('\u0661\u0662\u0663\u0664', 3)
298+
s = '\u0661\u0662\u0663\u0664'
299+
try:
300+
func(s, 3)
301+
except UnicodeEncodeError:
302+
self.assertRaises(UnicodeEncodeError, s.encode, encoding)
285303
func('1234', 5)
286304
func('1234', 3, curses.A_BOLD)
287305
func(1, 2, '1234', 3)
@@ -471,7 +489,7 @@ def test_background(self):
471489
win = curses.newwin(5, 15, 5, 2)
472490
win.addstr(0, 0, 'Lorem ipsum')
473491

474-
self.assertEqual(win.getbkgd(), 0)
492+
self.assertIn(win.getbkgd(), (0, 32))
475493

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

0 commit comments

Comments
 (0)