a
    xd%                     @   sR  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mZ ddl	m
Z
mZ ddlmZmZ ejdkZejje ddZerdd	lmZ n6ee dd	lmZ W d   n1 s0    Y  d
dddZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!d d! Z"ejjej#$d"d#dd$d% Z%ed&d' Z&dS )(    N   )gc_collect_harderskip_if_fbsd_pipes_broken)_coremove_on_after)wait_all_tasks_blockedcheck_one_way_streamposixz
posix only)reason)FdStreamzTuple[FdStream, FdStream])returnc                     s   t  \} }t|t| fS )zMakes a new pair of pipes.)ospiper   )rw r   R/var/www/html/Ranjet/env/lib/python3.9/site-packages/trio/tests/test_unix_pipes.py	make_pipe   s    r   c                     sV   t  I d H \} }z*ttdd}t|  d| d  qW n tyL   Y n0 | |fS )NPIPE_BUFi       xr   )r   getattrselectr   writefilenoBlockingIOError)sr   buf_sizer   r   r   make_clogged_pipe   s    r   c               	      s   t  \} }t|4 I d H T}| |ks.J |dI d H  t | ddksRJ t |  W d   I d H  q1 I d H s|0    Y  d S Ns   123   )r   r   r   r   send_allreadclose)r   r   sendr   r   r   test_send_pipe7   s    r$   c               	      s   t  \} }t| 4 I d H T}| | ks.J t |d |dI d H dksRJ t | W d   I d H  q1 I d H s|0    Y  d S r   )r   r   r   r   r   receive_somer"   )r   r   recvr   r   r   test_receive_pipeA   s    r'   c               	      s   t  I d H \d  fdd}  fdd}t 4 I d H *}||  || W d   I d H  q1 I d H sv0    Y   I d H   I d H  d S )Ni   c                     s   t  } | I d H  d S N)	bytearrayr    )big)countr   r   r   senderO   s    z#test_pipes_combined.<locals>.senderc                     sB   t  I d H  d} |  k r2| tdI d H 7 } q|  ks>J d S )Nr   i   )r   lenr%   )Zreceived)r+   r!   r   r   readerS   s
    z#test_pipes_combined.<locals>.reader)r   r   open_nursery
start_soonaclose)r,   r.   nr   )r+   r!   r   r   test_pipes_combinedK   s    
4r3   c               	      s   t t td  W d    n1 s(0    Y  t \} }t| t| 4 I d H P}t t  |dI d H  W d    n1 s0    Y  W d   I d H  q1 I d H s0    Y  d S )Nr   )	pytestraises	TypeErrorr   r   r   r"   
ValueErrorr%   )r   r   r   r   r   r   test_pipe_errorsc   s    &
r8   c                     s   t  I d H \} }|  |  }}~ ~t  tt}t| W d    n1 sV0    Y  |jj	t	j
ksrJ tt}t| W d    n1 s0    Y  |jj	t	j
ksJ d S r(   )r   r   r   r4   r5   OSErrorr   r"   valueerrnoEBADF)r   r   f1f2excinfor   r   r   test_deln   s    ((r@   c               
      s<  t  I d H \} }| 4 I d H N |4 I d H  W d   I d H  qV1 I d H sL0    Y  W d   I d H  q1 I d H sv0    Y  |  dksJ | dksJ tt}t|   W d    n1 s0    Y  |jjtj	ksJ tt}t|  W d    n1 s0    Y  |jjtj	ks8J d S )N)
r   r   r4   r5   r9   r   r"   r:   r;   r<   )r   r   r?   r   r   r   test_async_with}   s    T,.rB   c               
      s6  t  I d H \} }| }|  I d H  | I d H  t \}}||kr^t|| t| t|4 I d H    |ksJ  fdd}t	 4 I d H R}|
| t I d H  | I d H  t I d H  t| W d   I d H  q1 I d H s0    Y  W d   I d H  q21 I d H s(0    Y  d S )Nc                      s     dI d H dksJ d S )N
       )r%   r   Zr2r   r   
expect_eof   s    z6test_misdirected_aclose_regression.<locals>.expect_eof)r   r   r1   r   r   dup2r"   r   r   r/   r0   r   )r   r   Zold_r_fdZr2_fdZw2_fdrF   nurseryr   rE   r   "test_misdirected_aclose_regression   s"    

rI   c                    s   fdd}t jjj  fdd}| t jjd| t I d H \}|4 I d H  4 I d H x t  4 I d H <}|| t I d H  |	dI d H  W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  d S )Nc                      s@   t tj   dI d H  W d    n1 s20    Y  d S )NrC   )r4   r5   r   ClosedResourceErrorr%   r   )r   r   r   expect_closedresourceerror   s    zKtest_close_at_bad_time_for_receive_some.<locals>.expect_closedresourceerrorc                     s&    | i |I d H    I d H  d S r(   r1   argskwargsZorig_wait_readabler   r   r   patched_wait_readable   s    zFtest_close_at_bad_time_for_receive_some.<locals>.patched_wait_readablewait_readabler   )
r   _runTheIOManagerrR   setattrr   r/   r0   r   r    )monkeypatchrK   rQ   r   rH   r   rP   r   'test_close_at_bad_time_for_receive_some   s    

rW   c                    s8  fdd}t jjj  fdd}| t jjd| t I d H \}4 I d H  |4 I d H  t  4 I d H R}|| t I d H  |	dI d H }|r|	dI d H }qW d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  W d   I d H  q41 I d H s*0    Y  d S )Nc                      s@   t tj   dI d H  W d    n1 s20    Y  d S )Nsd   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r4   r5   r   rJ   r    r   )r   r   r   rK      s    zGtest_close_at_bad_time_for_send_all.<locals>.expect_closedresourceerrorc                     s&    | i |I d H    I d H  d S r(   rL   rM   Zorig_wait_writabler   r   r   patched_wait_writable   s    zBtest_close_at_bad_time_for_send_all.<locals>.patched_wait_writablewait_writablei'  )
r   rS   rT   rZ   rU   r   r/   r0   r   r%   )rV   rK   rY   r   rH   Zreceived_datar   rX   r   #test_close_at_bad_time_for_send_all   s    

r[   Zfreebsdz7no way to make read() return a bizarro error on FreeBSDc                     s   t  I d H \} }| 4 I d H  |4 I d H  tdtjd}zZt||  ttj	  |
dI d H  W d    n1 s0    Y  W t| nt| 0 W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  d S )N/r   rC   )r   r   openO_DIRECTORYrG   r   r4   r5   r   ZBrokenResourceErrorr%   r"   )r   r   dir_fdr   r   r   !test_bizarro_OSError_from_receive   s    0r`   c                      s   t ttI d H  d S r(   )r   r   r   r   r   r   r   test_pipe_fully  s    ra   )'r;   r   r   tempfilesysr4   Z_core.tests.tutilr   r    r   r   Ztestingr   r   namer	   markZskipifZ
pytestmarkZ_unix_pipesr   r5   ImportErrorr   r   r$   r'   r3   r8   r@   rB   rI   rW   r[   platform
startswithr`   ra   r   r   r   r   <module>   s@   
*

&+

