[pypy-commit] pypy py3.5: Test and fix on Windows (os.get_terminal_size() failures)
arigo
pypy.commits at gmail.com
Wed Aug 22 01:38:14 EDT 2018
Author: Armin Rigo <arigo at tunes.org>
Branch: py3.5
Changeset: r95017:f9e3e94e62d6
Date: 2018-08-22 07:37 +0200
http://bitbucket.org/pypy/pypy/changeset/f9e3e94e62d6/
Log: Test and fix on Windows (os.get_terminal_size() failures)
diff --git a/pypy/module/posix/interp_posix.py b/pypy/module/posix/interp_posix.py
--- a/pypy/module/posix/interp_posix.py
+++ b/pypy/module/posix/interp_posix.py
@@ -2407,7 +2407,7 @@
if _WIN32:
have_functions.append("HAVE_MS_WINDOWS")
-def get_terminal_size(space, w_fd=None):
+def _get_terminal_size(space, w_fd=None):
if w_fd is None:
fd = rfile.RFile(rfile.c_stdout(), close2=(None, None)).fileno()
else:
@@ -2447,7 +2447,13 @@
w_columns = space.newint(r_uint(winsize.c_ws_col))
w_lines = space.newint(r_uint(winsize.c_ws_row))
+ return w_columns, w_lines
+def get_terminal_size(space, w_fd=None):
+ try:
+ w_columns, w_lines = _get_terminal_size(space, w_fd)
+ except OSError as e:
+ raise wrap_oserror(space, e, eintr_retry=False)
w_tuple = space.newtuple([w_columns, w_lines])
w_terminal_size = space.getattr(space.getbuiltinmodule(os.name),
space.newtext('terminal_size'))
diff --git a/pypy/module/posix/test/test_posix2.py b/pypy/module/posix/test/test_posix2.py
--- a/pypy/module/posix/test/test_posix2.py
+++ b/pypy/module/posix/test/test_posix2.py
@@ -1488,6 +1488,16 @@
raises(OSError, os.getxattr, self.path, 'user.test')
assert os.listxattr(self.path, follow_symlinks=False) == init_names
+ def test_get_terminal_size(self):
+ os = self.posix
+ for args in [(), (1,), (0,), (42421,)]:
+ try:
+ w, h = os.get_terminal_size(*args)
+ except (ValueError, OSError):
+ continue
+ assert isinstance(w, int)
+ assert isinstance(h, int)
+
class AppTestEnvironment(object):
def setup_class(cls):
More information about the pypy-commit
mailing list