diff options
author | Robey Pointer <robey@lag.net> | 2007-10-28 20:03:44 -0700 |
---|---|---|
committer | Robey Pointer <robey@lag.net> | 2007-10-28 20:03:44 -0700 |
commit | e3d9b90ea1f25792e652a0809b37b52635243932 (patch) | |
tree | c6b99f4940f2ceec7941500839d860119d0609fb /tests/test_buffered_pipe.py | |
parent | 80b9e289cef4fc0939141ccf15751017a58a1637 (diff) |
[project @ robey@lag.net-20071029030344-9adfzb9ulfodtepu]
bug 157205: select() doesn't notify incoming stderr data, because stderr's
pipe isn't hooked up to the fileno() BufferedPipe. to fix, i added an "or"
pipe-event that can be triggered by either stdout or stderr, and hooked
them both up to fileno(). added a unit test for the bug and one for the
"or" pipe.
Diffstat (limited to 'tests/test_buffered_pipe.py')
-rw-r--r-- | tests/test_buffered_pipe.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/test_buffered_pipe.py b/tests/test_buffered_pipe.py index ac123527..bef8fb8a 100644 --- a/tests/test_buffered_pipe.py +++ b/tests/test_buffered_pipe.py @@ -24,6 +24,7 @@ import threading import time import unittest from paramiko.buffered_pipe import BufferedPipe, PipeTimeout +from paramiko import pipe def delay_thread(pipe): @@ -75,3 +76,17 @@ class BufferedPipeTest (unittest.TestCase): threading.Thread(target=close_thread, args=(p,)).start() data = p.read(1, 1.0) self.assertEquals('', data) + + def test_4_or_pipe(self): + p = pipe.make_pipe() + p1, p2 = pipe.make_or_pipe(p) + self.assertFalse(p._set) + p1.set() + self.assertTrue(p._set) + p2.set() + self.assertTrue(p._set) + p1.clear() + self.assertTrue(p._set) + p2.clear() + self.assertFalse(p._set) + |