def test_pipe2file(self): with gevent.Timeout(1): pipe = Pipe() file = tempfile.NamedTemporaryFile(delete=False) try: pf = gevent.spawn_link_exception(pipe_to_file, pipe, file) with open(self.TESTFILE, "r") as infile: for line in infile: pipe.put(line) pipe.close() pf.join() self.assertTrue(file.closed) self.assertTrue(pipe.finished()) self.assertEqualFiles(self.TESTFILE, file.name) finally: try: os.remove(file.name) except: pass
def test_blocked_put_raises(self): """ A blocked put() should raise PipeClosed as soon as the pipe is closed """ with gevent.Timeout(1): pipe = Pipe(0) g = gevent.spawn(_blocktest, pipe.put, None) while not pipe.putters: # Make sure pipe.put is blocking gevent.sleep(0) pipe.close() self.assertTrue(g.get(), 'pipe.put() did not raise PipeClosed as expected')
def test_empty(self): with gevent.Timeout(1): pipe = Pipe() self.assertFalse(pipe.closed()) self.assertFalse(pipe.finished()) pipe.close() self.assertTrue(pipe.closed()) self.assertTrue(pipe.finished())
def test_put_and_get_closed(self): with gevent.Timeout(1): pipe = Pipe() pipe.put(1) pipe.close() self.assertTrue(pipe.closed()) self.assertFalse(pipe.finished()) self.assertEqual(pipe.get_nowait(), 1) self.assertTrue(pipe.closed()) self.assertTrue(pipe.finished()) self.assertRaises(PipeClosed, pipe.get_nowait)
def test_put_raises_pipeclosed(self): with gevent.Timeout(1): pipe = Pipe() pipe.close() self.assertRaises(PipeClosed, pipe.put, 1)
def test_get_raises_pipeclosed(self): with gevent.Timeout(1): pipe = Pipe() pipe.close() self.assertRaises(PipeClosed, pipe.get_nowait)