summaryrefslogtreecommitdiff
path: root/tests/test_buffered_pipe.py
diff options
context:
space:
mode:
authorRobey Pointer <robey@lag.net>2007-10-28 20:03:44 -0700
committerRobey Pointer <robey@lag.net>2007-10-28 20:03:44 -0700
commite3d9b90ea1f25792e652a0809b37b52635243932 (patch)
treec6b99f4940f2ceec7941500839d860119d0609fb /tests/test_buffered_pipe.py
parent80b9e289cef4fc0939141ccf15751017a58a1637 (diff)
downloadparamiko-e3d9b90ea1f25792e652a0809b37b52635243932.tar.gz
[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.py15
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)
+