ó
ÐH/\c           @  s­  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 j
 Z d  d l m Z d  d l m Z d  d l m Z y e Wn' e k
 rØ d e f d „  ƒ  YZ n Xd	 „  Z d
 „  Z d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e e f d „  ƒ  YZ e j e e d ƒ d ƒ d e e f d „  ƒ  Yƒ Z d e j f d „  ƒ  YZ e  d k r©e j! j" d ƒ e j# ƒ  n  d S(   iÿÿÿÿ(   t   print_functionN(   t
   fileobject(   t   PY3(   t"   reraiseFlakyTestRaceConditionLibuv(   t   skipOnLibuvOnCIOnPyPyt   ResourceWarningc           B  s   e  Z d  Z RS(   s   Python 2 fallback(   t   __name__t
   __module__t   __doc__(    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR      s   c         C  s6   x% | D] } |  j  | ƒ |  j ƒ  q W|  j ƒ  d  S(   N(   t   writet   flusht   close(   t   fobjt   linet	   character(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   writer   s    c         C  s/   y t  j |  ƒ Wn t t f k
 r* n Xd  S(   N(   t   osR   t   IOErrort   OSError(   t   fd(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   close_fd_quietly   s    t   TestFileObjectBlockc           B  s\   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z	 d „  Z
 RS(	   c         C  s   t  j S(   N(   R   t   FileObjectBlock(   t   self(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   _getTargetClass'   s    c         O  s   |  j  ƒ  | | Ž  S(   N(   R   (   R   t   argst   kwargs(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   _makeOne*   s    c         K  sL   t  j ƒ  \ } } |  j t | ƒ |  j t | ƒ |  j | | f |  d  S(   N(   R   t   pipet
   addCleanupR   t   _do_test_del(   R   R   t   rt   w(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt	   _test_del-   s    c   	   	   K  s>  | \ } } |  j  | d |  } | j d ƒ y | j ƒ  WnC t k
 r t d t | ƒ d t j ƒd d  l } | j	 ƒ  n Xd d  l
 } | j ƒ  " | j d t ƒ ~ t j ƒ  Wd  QX| j d t ƒ rü |  j t t f ƒ  t j | ƒ Wd  QXn t j | ƒ |  j  | d ƒ  } |  j | j ƒ  d ƒ Wd  QXd  S(	   Nt   wbt   xs   Failed flushing fileobjectt   fileiÿÿÿÿt   ignoreR   t   rb(   R   R	   R
   R   t   printt   reprt   syst   stderrt	   tracebackt	   print_exct   warningst   catch_warningst   simplefilterR   t   gct   collectt   gett   Truet   assertRaisesR   R   R   t   assertEqualt   read(	   R   R   R   R   R    t   sR+   R-   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR   4   s(    c         C  s   |  j  ƒ  d  S(   N(   R!   (   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_delQ   s    c         C  s   |  j  d t ƒ d  S(   NR   (   R!   R3   (   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_del_closeU   s    s+   This appears to crash on libuv/pypy/travis.c      
   C  sc  t  j d ƒ \ } } |  j t j | ƒ d d } t j | d	 ƒ t j | | ƒ t j | ƒ t | d ƒ # } | j d ƒ | j	 d ƒ } Wd  QXt | d ƒ › } y |  j
 | d d t ƒ} Wn t k
 rÛ t ƒ  n Xt sñ t | d ƒ r|  j | j ƒ  ƒ n  | j d ƒ |  j d | j ƒ  ƒ | j	 d ƒ } Wd  QX|  j | | ƒ |  j | | ƒ d  S(
   Ns"   .gevent.test__fileobject.test_seekt   ai   t   Bi   R&   R   t   seekablet   BBBBBBBBBBBBBBB(   t   tempfilet   mkstempR   R   t   removeR	   R   t   opent   seekR6   R   t   Falset
   ValueErrorR   R   t   hasattrt
   assertTrueR<   R5   t   tell(   R   t   filenot   pathR7   t   ft   native_datat   f_rawt   fileobj_data(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt	   test_seekX   s*    
c         C  sK   t  j ƒ  \ } } |  j | ƒ } |  j | d ƒ } | j ƒ  | j ƒ  d  S(   NR    (   R   R   R   R   (   R   R   R    R#   t   y(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_close_pipe‚   s
    
(   R   R   R   R   R!   R   R8   R9   R   RN   RP   (    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR   %   s   						*t   ConcurrentFileObjectMixinc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  sg   t  j ƒ  \ } } |  j | ƒ } |  j | d ƒ } |  j | ƒ |  j | ƒ |  j t | d ƒ ƒ d  S(   NR    t   read1(   R   R   R   t   _close_on_teardownRF   RE   (   R   R   R    R#   RO   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt
   test_read1   s    c         C  s»   t  j ƒ  \ } } |  j | d d d ƒ} |  j | d d d ƒ} |  j | ƒ |  j | ƒ | j d ƒ | j d ƒ } |  j | d ƒ | j d g ƒ | j d ƒ } |  j | d ƒ d  S(   NR&   t   bufsizei    R"   R:   i   t   2(   R   R   R   RS   R	   R6   R5   t
   writelines(   R   R   R    R#   RO   t   b(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_bufsize_0˜   s    c         C  sÅ   d d  l  } t j ƒ  \ } } d d d d d g } t j t |  j | d ƒ | ƒ } z_ | j ƒ  ' | j d t	 ƒ |  j | d	 ƒ } Wd  QX| j
 ƒ  } | j ƒ  |  j d
 | ƒ Wd  | j ƒ  Xd  S(   Niÿÿÿÿs   line1
s   line2s   line3
s   line4
line5s   
line6R"   R%   t   rUs#   line1
line2
line3
line4
line5
line6(   R-   R   R   t   geventt   spawnR   R   R.   R/   t   DeprecationWarningR6   R   R5   t   kill(   R   R-   R   R    t   linest   gR   t   result(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_newlines§   s    !
(   R   R   RT   RY   Rb   (    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyRQ   ‹   s   			t   TestFileObjectThreadc           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  s   t  j S(   N(   R   t   FileObjectThread(   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR   ¼   s    c         C  s-   |  j  t d ƒ  |  j d t ƒ Wd  QXd  S(   Ns7   FileObjectThread does not support close=False on an fd.R   (   t   assertRaisesRegext	   TypeErrorR!   RC   (   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_del_nocloseÂ   s    	
c         C  s   t  j d ƒ ‚ d  S(   Ns   Race conditions(   t   unittestt   SkipTest(   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR8   Ð   s    c         C  s   t  j d ƒ ‚ d  S(   Ns   Race conditions(   Rh   Ri   (   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR9   Ó   s    (   R   R   R   Rg   R8   R9   (    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyRc   ¹   s   			t   FileObjectPosixs   Needs FileObjectPosixt   TestFileObjectPosixc           B  s   e  Z d  „  Z d „  Z RS(   c         C  s   t  j S(   N(   R   Rj   (   R   (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyR   Þ   s    c      
   C  s  t  j ƒ  \ } } |  j t | ƒ |  j t | ƒ |  j t ƒ  } t  j | d t  j ƒ Wd  QX| j } |  j t	 ƒ / } |  j
 | d d t ƒ} | j j d ƒ Wd  QX| j } |  j | j | j ƒ |  j | j | j ƒ |  j | j | j ƒ |  j t | ƒ t | ƒ ƒ d  S(   Ni    R   R   (   R   R   R   R   R4   R   t   lseekt   SEEK_SETt	   exceptionR   R   RC   t   fileioRB   R5   t   errnot   strerrorR   t   str(   R   R   R    t   ctxt   os_exRJ   t   io_ex(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   test_seek_raises_ioerrorá   s    		(   R   R   R   Rv   (    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyRk   ×   s   	t   TestTextModec           B  s   e  Z d  „  Z RS(   c         C  s¨   t  j ƒ  t j d ƒ \ } } |  j t j | ƒ t j | ƒ t | d ƒ  } | j	 d ƒ Wd  QXt | d ƒ  } | j
 ƒ  } Wd  QX|  j | t j j d ƒ ƒ d  S(   Ns%   .gevent.test__fileobject.test_defaultR    s   
R&   t   ascii(   R[   t   get_hubR>   R?   R   R   R@   R   RA   R	   R6   R5   t   linesept   encode(   R   RH   RI   RJ   t   data(    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt    test_default_mode_writes_linesepþ   s    
(   R   R   R}   (    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyRw   ü   s   t   __main__s   -v($   t
   __future__R    R   R)   R>   R0   Rh   R[   R   t   gevent.testingt   testingt	   greentestt   gevent.testing.sysinfoR   t   gevent.testing.flakyR   t   gevent.testing.skippingR   R   t	   NameErrort   WarningR   R   t   TestCaseR   t   objectRQ   Rc   t
   skipUnlessRE   Rk   Rw   R   t   argvt   appendt   main(    (    (    s<   lib/python2.7/site-packages/gevent/tests/test__fileobject.pyt   <module>   s<   		f.	 