Fix shutil.get_terminal_size() error handling

Issue #26801: Fix error handling in shutil.get_terminal_size(), catch
AttributeError instead of NameError. Patch written by Emanuel Barry.

test_shutil: skip the functional test using "stty size" command if
os.get_terminal_size() is missing.
This commit is contained in:
Victor Stinner 2016-04-19 22:24:56 +02:00
parent ded4c4967b
commit 119ebb70e9
4 changed files with 8 additions and 1 deletions

View File

@ -1069,7 +1069,7 @@ def get_terminal_size(fallback=(80, 24)):
if columns <= 0 or lines <= 0:
try:
size = os.get_terminal_size(sys.__stdout__.fileno())
except (NameError, OSError):
except (AttributeError, OSError):
size = os.terminal_size(fallback)
if columns <= 0:
columns = size.columns

View File

@ -1837,6 +1837,8 @@ class TermsizeTests(unittest.TestCase):
self.assertEqual(size.lines, 888)
@unittest.skipUnless(os.isatty(sys.__stdout__.fileno()), "not on tty")
@unittest.skipUnless(hasattr(os, 'get_terminal_size'),
'need os.get_terminal_size()')
def test_stty_match(self):
"""Check if stty returns the same results ignoring env

View File

@ -90,6 +90,7 @@ Matthew Barnett
Richard Barran
Cesar Eduardo Barros
Des Barry
Emanuel Barry
Ulf Bartelt
Campbell Barton
Don Bashford

View File

@ -107,6 +107,10 @@ Core and Builtins
Library
-------
- Issue #26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
:exc:`AttributeError` instead of :exc:`NameError`. Patch written by Emanuel
Barry.
- Issue #24838: tarfile's ustar and gnu formats now correctly calculate name
and link field limits for multibyte character encodings like utf-8.