https://github.com/python/cpython/commit/64fab74bd7288bfa67cd7727452febdaafed4270 commit: 64fab74bd7288bfa67cd7727452febdaafed4270 branch: main author: Serhiy Storchaka <[email protected]> committer: serhiy-storchaka <[email protected]> date: 2026-06-19T11:32:02Z summary:
gh-151693: Make the curses tests portable to other curses implementations (GH-151729) Make the curses tests portable to other curses implementations Guard the chgat() check (chgat() needs wchgat()) and stop assuming a subpad shares the parent pad's cells (implementation-defined in X/Open). Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]> files: M Lib/test/test_curses.py diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index 647959146a792c..c6a762c04e0525 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -377,10 +377,12 @@ def test_pad(self): pad.addstr(0, 0, 'PADTEXT') self.assertEqual(pad.instr(0, 0, 7), b'PADTEXT') - # subpad() shares the parent pad's character cells. + # subpad() creates a pad within the parent pad. Cell sharing with + # the parent is implementation-defined, so write to the subpad itself. sub = pad.subpad(3, 5, 0, 0) self.assertEqual(sub.getmaxyx(), (3, 5)) - self.assertEqual(sub.instr(0, 0, 5), b'PADTE') + sub.addstr(1, 0, 'sub') + self.assertEqual(sub.instr(1, 0, 3), b'sub') # A pad is refreshed onto an explicit screen rectangle; the # 6-argument form is required (and rejected for ordinary windows). @@ -414,7 +416,8 @@ def test_coordinate_errors(self): self.assertRaises(curses.error, win.move, -1, -1) self.assertRaises(curses.error, win.addch, 100, 100, ord('x')) self.assertRaises(curses.error, win.inch, 100, 100) - self.assertRaises(curses.error, win.chgat, 100, 0, curses.A_BOLD) + if hasattr(win, 'chgat'): # chgat() requires wchgat() + self.assertRaises(curses.error, win.chgat, 100, 0, curses.A_BOLD) def test_argument_errors(self): win = curses.newwin(5, 10, 0, 0) _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
