From 46e8045c67428e4f29526573924b06c15754c3df Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 18 Jul 2026 00:26:12 +0300 Subject: [PATCH] Skip curses tests when scr_dump()/is_keypad() are unavailable test_scr_dump() and test_state_getters() errored instead of skipping on builds without scr_dump(), is_keypad() or is_leaveok() (e.g. some narrow ncurses, NetBSD, PDCurses). Co-Authored-By: Claude Opus 4.8 --- Lib/test/test_curses.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py index b99e4efbb83ce4..3ba79be789cf3e 100644 --- a/Lib/test/test_curses.py +++ b/Lib/test/test_curses.py @@ -1364,6 +1364,7 @@ def test_putwin(self): self.assertEqual(win.getmaxyx(), (5, 12)) self.assertEqual(win.instr(2, 0), b' Lorem ipsum') + @requires_curses_func('scr_dump') def test_scr_dump(self): # Test scr_dump(), scr_restore(), scr_init() and scr_set(). # scr_dump() writes the virtual screen to a named file; the other three @@ -1722,6 +1723,9 @@ def test_state_getters(self): ('notimeout', 'is_notimeout'), ('scrollok', 'is_scrollok'), ]: + # is_keypad()/is_leaveok() are not available in every curses build. + if not hasattr(stdscr, getter): + continue getattr(stdscr, setter)(True) self.assertIs(getattr(stdscr, getter)(), True) getattr(stdscr, setter)(False)