Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions Lib/test/test_curses.py
Original file line number Diff line number Diff line change
Expand Up @@ -3275,6 +3275,11 @@ def setUp(self):
self.save_signals = SaveSignals()
self.save_signals.save()
self.addCleanup(self.save_signals.restore)
# A new pseudo-terminal has no size, so newterm() takes it from
# $LINES and $COLUMNS, or from the terminfo entry if they are unset.
env = self.enterContext(os_helper.EnvironmentVarGuard())
env['LINES'] = '24'
env['COLUMNS'] = '80'

def tearDown(self):
# Leave visual mode and reclaim the test's screens while their
Expand Down Expand Up @@ -3341,6 +3346,26 @@ def test_newterm(self):
win.addstr(0, 0, 'hello')
win.refresh()

def test_lines_columns_env(self):
# $LINES and $COLUMNS override the size from the terminfo entry
# (24x80 for xterm).
for lines, columns, size in [('30', '100', (30, 100)),
('30', None, (30, 80)),
(None, '100', (24, 100)),
(None, None, (24, 80))]:
with self.subTest(lines=lines, columns=columns):
with os_helper.EnvironmentVarGuard() as env:
for name, value in [('LINES', lines),
('COLUMNS', columns)]:
if value is None:
env.unset(name)
else:
env[name] = value
s = self.make_pty()
screen = curses.newterm('xterm', s, s)
self.assertEqual(screen.stdscr.getmaxyx(), size)
self.assertEqual((curses.LINES, curses.COLS), size)

def test_newterm_file_object(self):
# type=None uses $TERM; the file arguments accept file objects too.
s = self.make_pty()
Expand Down
Loading