Skip to content

Commit

Permalink
bpo-41818: Make test_openpty() avoid unexpected success due to number…
Browse files Browse the repository at this point in the history
… of rows and/or number of columns being == 0. (GH-23526)
  • Loading branch information
8vasu authored Nov 27, 2020
1 parent c8aaf71 commit f5a19ea
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 19 deletions.
29 changes: 10 additions & 19 deletions Lib/test/test_pty.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import_module('termios')

import errno
import pathlib
import pty
import os
import sys
Expand Down Expand Up @@ -75,20 +74,7 @@ def _readline(fd):
return reader.readline()

def expectedFailureIfStdinIsTTY(fun):
# avoid isatty() for now
PLATFORM = platform.system()
if PLATFORM == "Linux":
os_release = pathlib.Path("/etc/os-release")
if os_release.exists():
# Actually the file has complex multi-line structure,
# these is no need to parse it for Gentoo check
if 'gentoo' in os_release.read_text().lower():
# bpo-41818:
# Gentoo passes the test,
# all other tested Linux distributions fail.
# Should not apply @unittest.expectedFailure() on Gentoo
# to keep the buildbot fleet happy.
return fun
# avoid isatty()
try:
tty.tcgetattr(pty.STDIN_FILENO)
return unittest.expectedFailure(fun)
Expand Down Expand Up @@ -165,11 +151,16 @@ def test_openpty(self):
new_stdin_winsz = None
if self.stdin_rows != None and self.stdin_cols != None:
try:
# Modify pty.STDIN_FILENO window size; we need to
# check if pty.openpty() is able to set pty slave
# window size accordingly.
debug("Setting pty.STDIN_FILENO window size")
# Set number of columns and rows to be the
# floors of 1/5 of respective original values
target_stdin_winsz = struct.pack("HHHH", self.stdin_rows//5,
self.stdin_cols//5, 0, 0)
debug(f"original size: (rows={self.stdin_rows}, cols={self.stdin_cols})")
target_stdin_rows = self.stdin_rows + 1
target_stdin_cols = self.stdin_cols + 1
debug(f"target size: (rows={target_stdin_rows}, cols={target_stdin_cols})")
target_stdin_winsz = struct.pack("HHHH", target_stdin_rows,
target_stdin_cols, 0, 0)
_set_term_winsz(pty.STDIN_FILENO, target_stdin_winsz)

# Were we able to set the window size
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Make test_openpty() avoid unexpected success due to number of rows and/or number of columns being == 0.

0 comments on commit f5a19ea

Please sign in to comment.