import sys
import threading
import unittest
-from test.support import get_attribute
+from test import support
from test.support import threading_helper
from test.support.import_helper import import_module
fcntl = import_module('fcntl')
class IoctlTestsTty(unittest.TestCase):
@classmethod
def setUpClass(cls):
- TIOCGPGRP = get_attribute(termios, 'TIOCGPGRP')
+ TIOCGPGRP = support.get_attribute(termios, 'TIOCGPGRP')
try:
tty = open("/dev/tty", "rb")
except OSError:
def test_ioctl_clear_input_or_output(self):
wfd = self.slave_fd
rfd = self.master_fd
- inbuf = sys.platform == 'linux'
+ # The data is buffered in the input buffer on Linux, and in
+ # the output buffer on other platforms.
+ inbuf = sys.platform in ('linux', 'android')
os.write(wfd, b'abcdef')
self.assertEqual(os.read(rfd, 2), b'ab')
def writer():
os.write(wfd, b'abc')
- write_suspended.wait()
+ self.assertTrue(write_suspended.wait(support.SHORT_TIMEOUT))
os.write(wfd, b'def')
write_finished.set()
with threading_helper.start_threads([threading.Thread(target=writer)]):
self.assertEqual(os.read(rfd, 3), b'abc')
try:
- fcntl.ioctl(wfd, termios.TCXONC, termios.TCOOFF)
- write_suspended.set()
+ try:
+ fcntl.ioctl(wfd, termios.TCXONC, termios.TCOOFF)
+ finally:
+ write_suspended.set()
self.assertFalse(write_finished.wait(0.5),
'output was not suspended')
finally:
fcntl.ioctl(wfd, termios.TCXONC, termios.TCOON)
- self.assertTrue(write_finished.wait(0.5),
+ self.assertTrue(write_finished.wait(support.SHORT_TIMEOUT),
'output was not resumed')
self.assertEqual(os.read(rfd, 1024), b'def')
def test_tcflush_clear_input_or_output(self):
wfd = self.fd
rfd = self.master_fd
- inbuf = sys.platform == 'linux'
+ # The data is buffered in the input buffer on Linux, and in
+ # the output buffer on other platforms.
+ inbuf = sys.platform in ('linux', 'android')
os.write(wfd, b'abcdef')
self.assertEqual(os.read(rfd, 2), b'ab')
def writer():
os.write(wfd, b'abc')
- write_suspended.wait()
+ self.assertTrue(write_suspended.wait(support.SHORT_TIMEOUT))
os.write(wfd, b'def')
write_finished.set()
with threading_helper.start_threads([threading.Thread(target=writer)]):
self.assertEqual(os.read(rfd, 3), b'abc')
try:
- termios.tcflow(wfd, termios.TCOOFF)
- write_suspended.set()
+ try:
+ termios.tcflow(wfd, termios.TCOOFF)
+ finally:
+ write_suspended.set()
self.assertFalse(write_finished.wait(0.5),
'output was not suspended')
finally:
termios.tcflow(wfd, termios.TCOON)
- self.assertTrue(write_finished.wait(0.5),
+ self.assertTrue(write_finished.wait(support.SHORT_TIMEOUT),
'output was not resumed')
self.assertEqual(os.read(rfd, 1024), b'def')