[Python-checkins] python/dist/src/Lib/test test_pty.py,1.17,1.18
nnorwitz@users.sourceforge.net
nnorwitz@users.sourceforge.net
2003年3月20日 17:39:16 -0800
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv12847/Lib/test
Modified Files:
test_pty.py
Log Message:
Prevent the pty test from hanging by setting an alarm.
Currently, test_pty hangs on AIX & HPUX if run after test_openpty.
Index: test_pty.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_pty.py,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** test_pty.py 1 Jan 2003 14:53:27 -0000 1.17
--- test_pty.py 21 Mar 2003 01:39:14 -0000 1.18
***************
*** 1,3 ****
! import pty, os, sys
from test.test_support import verbose, TestFailed, TestSkipped
--- 1,3 ----
! import pty, os, sys, signal
from test.test_support import verbose, TestFailed, TestSkipped
***************
*** 15,48 ****
# because pty code is not too portable.
! try:
! debug("Calling master_open()")
! master_fd, slave_name = pty.master_open()
! debug("Got master_fd '%d', slave_name '%s'"%(master_fd, slave_name))
! debug("Calling slave_open(%s)"%`slave_name`)
! slave_fd = pty.slave_open(slave_name)
! debug("Got slave_fd '%d'"%slave_fd)
! except OSError:
! # " An optional feature could not be imported " ... ?
! raise TestSkipped, "Pseudo-terminals (seemingly) not functional."
! if not os.isatty(slave_fd):
! raise TestFailed, "slave_fd is not a tty"
! # IRIX apparently turns \n into \r\n. Allow that, but avoid allowing other
! # differences (like extra whitespace, trailing garbage, etc.)
! debug("Writing to slave_fd")
! os.write(slave_fd, TEST_STRING_1)
! s1 = os.read(master_fd, 1024)
! sys.stdout.write(s1.replace("\r\n", "\n"))
! debug("Writing chunked output")
! os.write(slave_fd, TEST_STRING_2[:5])
! os.write(slave_fd, TEST_STRING_2[5:])
! s2 = os.read(master_fd, 1024)
! sys.stdout.write(s2.replace("\r\n", "\n"))
! os.close(slave_fd)
! os.close(master_fd)
# basic pty passed.
--- 15,64 ----
# because pty code is not too portable.
! def test_basic_pty():
! try:
! debug("Calling master_open()")
! master_fd, slave_name = pty.master_open()
! debug("Got master_fd '%d', slave_name '%s'"%(master_fd, slave_name))
! debug("Calling slave_open(%s)"%`slave_name`)
! slave_fd = pty.slave_open(slave_name)
! debug("Got slave_fd '%d'"%slave_fd)
! except OSError:
! # " An optional feature could not be imported " ... ?
! raise TestSkipped, "Pseudo-terminals (seemingly) not functional."
! if not os.isatty(slave_fd):
! raise TestFailed, "slave_fd is not a tty"
! # IRIX apparently turns \n into \r\n. Allow that, but avoid allowing other
! # differences (like extra whitespace, trailing garbage, etc.)
! debug("Writing to slave_fd")
! os.write(slave_fd, TEST_STRING_1)
! s1 = os.read(master_fd, 1024)
! sys.stdout.write(s1.replace("\r\n", "\n"))
! debug("Writing chunked output")
! os.write(slave_fd, TEST_STRING_2[:5])
! os.write(slave_fd, TEST_STRING_2[5:])
! s2 = os.read(master_fd, 1024)
! sys.stdout.write(s2.replace("\r\n", "\n"))
! os.close(slave_fd)
! os.close(master_fd)
!
! def handle_sig(sig, frame):
! raise TestFailed, "isatty hung"
!
! # isatty() and close() can hang on some platforms
! # set an alarm before running the test to make sure we don't hang forever
! old_alarm = signal.signal(signal.SIGALRM, handle_sig)
! signal.alarm(10)
!
! try:
! test_basic_pty()
! finally:
! # remove alarm, restore old alarm handler
! signal.alarm(0)
! signal.signal(signal.SIGALRM, old_alarm)
# basic pty passed.