From 869e04af10482ce998002ea5aa2b7f88a8e4ab71 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Mon, 22 Jul 2019 20:38:14 +0100 Subject: [PATCH] [stream-refactor] import fd_check.py used by create_child_test --- tests/data/fd_check.py | 56 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100755 tests/data/fd_check.py diff --git a/tests/data/fd_check.py b/tests/data/fd_check.py new file mode 100755 index 00000000..b933c9c7 --- /dev/null +++ b/tests/data/fd_check.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python + +import fcntl +import os +import sys + + +def ttyname(fd): + try: + t = os.ttyname(fd) + if hasattr(t, 'decode'): + t = t.decode() + return t + except OSError: + return None + + +def controlling_tty(): + try: + fp = open('/dev/tty') + try: + return ttyname(fp.fileno()) + finally: + fp.close() + except (IOError, OSError): + return None + + +fd = int(sys.argv[2]) +st = os.fstat(fd) + +if sys.argv[3] == 'write': + os.write(fd, u'TEST'.encode()) + buf = u'' +else: + buf = os.read(fd, 4).decode() + +open(sys.argv[1], 'w').write(repr({ + 'buf': buf, + 'flags': fcntl.fcntl(fd, fcntl.F_GETFL), + 'st_mode': st.st_mode, + 'st_dev': st.st_dev, + 'st_ino': st.st_ino, + 'ttyname': ttyname(fd), + 'controlling_tty': controlling_tty(), +})) + +open('/tmp/foo', 'w').write(repr({ + 'buf': buf, + 'flags': fcntl.fcntl(fd, fcntl.F_GETFL), + 'st_mode': st.st_mode, + 'st_dev': st.st_dev, + 'st_ino': st.st_ino, + 'ttyname': ttyname(fd), + 'controlling_tty': controlling_tty(), +}))