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)