o
    tPfK                     @   s   d dl mZmZmZ d dlZd dlmZ d dlZd dlmZ d dlmZm	Z	 d dlm
Z d dlmZ d dlmZ d d	lmZ G d
d dejZeeeddG dd deZeeeddG dd dejZedkrte  dS dS )    )print_functionabsolute_importdivisionNpipe)os)Greenletjoinall)testing)mock)six)skipOnLibuvOnPyPyOnWinc                   @   sr   e Zd ZejZdd Zeej	Z
eejZeddd Zejd dk r(dd	 Zejd
d dkr7dd Zd
S d
S )	TestOS_tpc                 C   s   t  S Nr   self r   V/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__os.pyr      s   zTestOS_tp.pipezSometimes times outc                    s     \dd}|| dgdg fdd}fdd}t|}|  t|}|d t||g d  d d  d S )	Ni@B s   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   c                     sR   d kr'd  } d    d t| d 7  < d ksd S d S Nr   i   )writemin	bytesleft)bufbyteswrittennbytesr   wr   r   produce&   s   &z/TestOS_tp._test_if_pipe_blocks.<locals>.producec               
      sN    d kr% d  }  d  t t| d7  <  d ksd S d S r   )lenreadr   r   )	bytesreadr   rr   r   r   consume+   s   "z/TestOS_tp._test_if_pipe_blocks.<locals>.consume   )r   r   startstart_laterr	   assertEqual)r   buffer_classblockr   r"   producerconsumerr   )r   r    r   r   r!   r   r   r   _test_if_pipe_blocks   s   
zTestOS_tp._test_if_pipe_blocksr      c                 C      |  tjj d S r   )r+   r   builtinsbufferr   r   r   r   test_if_pipe_blocks_buffer=      z$TestOS_tp.test_if_pipe_blocks_bufferN   )r2      c                 C   r-   r   )r+   r   r.   
memoryviewr   r   r   r   test_if_pipe_blocks_memoryviewB   r1   z(TestOS_tp.test_if_pipe_blocks_memoryview)__name__
__module____qualname__	greentestLARGE_TIMEOUT__timeout__r   staticmethodr   tp_readr   tp_writer   r   r+   sysversion_infor0   r5   r   r   r   r   r      s    


r   make_nonblockingzOnly on POSIXc                       s   e Zd Zdd Zdd Z fddZdd Zd	d
 Zdd Zdd Z	e
de
ddd Ze
de
ddd Ze
de
ddd Ze
de
ddd Z  ZS )	TestOS_nbc                 C      t ||S r   )r   nb_readr   fdcountr   r   r   r   J      zTestOS_nb.readc                 C   rC   r   )r   nb_writerE   r   r   r   r   M   rH   zTestOS_nb.writec                    s.   t t|  \}}t| t| ||fS r   )superrB   r   r   rA   )r   r!   r   	__class__r   r   r   P   s   

zTestOS_nb.pipec                 C   s   dd l }t }|j|_ |S )Nr   )errnoOSErrorEINTR)r   rM   ignored_oserrorr   r   r   _make_ignored_oserrorV   s   zTestOS_nb._make_ignored_oserrorc                 C   s6   |   |j}|jj}| || |j}|j   d S r   )assert_called_once_withreturn_valueloopioclose)r   mock_get_hubrF   eventhubrU   r   r   r   _check_hub_event_closed]   s   z!TestOS_nb._check_hub_event_closedc                 C   s:   |   dg|_d}|||}| |d | ||| d S )N*   d   )rQ   side_effectr&   rZ   )r   nb_funcnb_argmock_iorW   rX   rF   resultr   r   r   _test_event_closed_on_normal_iof   s
   
z)TestOS_nb._test_event_closed_on_normal_ioc                 C   sZ   |   t g|_d}| t ||| W d    n1 sw   Y  | ||| d S )Nr\   )rQ   
ValueErrorr]   assertRaisesrZ   )r   r^   r_   r`   rW   rX   rF   r   r   r   _test_event_closed_on_io_errorp   s   z(TestOS_nb._test_event_closed_on_io_errorzgevent.os.get_hubzgevent.os._writec                 C      |  tjd||d d S N   bufr2   )rb   r   rI   r   
mock_writerW   r   r   r   test_event_closed_on_write{      
z$TestOS_nb.test_event_closed_on_writec                 C   rf   rg   )re   r   rI   ri   r   r   r    test_event_closed_on_write_error   rl   z*TestOS_nb.test_event_closed_on_write_errorzgevent.os._readc                 C   rf   Nrh   r#   )rb   r   rD   r   	mock_readrW   r   r   r   test_event_closed_on_read   rl   z#TestOS_nb.test_event_closed_on_readc                 C   rf   rn   )re   r   rD   ro   r   r   r   test_event_closed_on_read_error   rl   z)TestOS_nb.test_event_closed_on_read_error)r6   r7   r8   r   r   r   rQ   rZ   rb   re   r   patchrk   rm   rq   rr   __classcell__r   r   rK   r   rB   F   s(    	
rB   fork_and_watchc                   @   s*   e Zd ZejZdd Zdd Zdd ZdS )TestForkAndWatchc                 C   s>   t  }|rt dd t d d S td t d d S )Nr   r2   )r   ru   waitpid_reap_childrengeventsleep_exit)r   pidr   r   r   test_waitpid_all   s   
z!TestForkAndWatch.test_waitpid_allc                 C      |  ttjdd d S )Nr   rd   rN   r   rx   r   r   r   r   test_waitpid_wrong_neg      z'TestForkAndWatch.test_waitpid_wrong_negc                 C   r   )Nr#   r   r   r   r   r   r   test_waitpid_wrong_pos   r   z'TestForkAndWatch.test_waitpid_wrong_posN)	r6   r7   r8   r9   r:   r;   r~   r   r   r   r   r   r   rv      s
    rv   __main__)
__future__r   r   r   r?   r   r   rz   r   r	   r
   r9   gevent.testingr   r   gevent.testing.skippingr   TestCaser   
skipUnlesshasattrrB   rv   r6   mainr   r   r   r   <module>   s,    5P