
    ,hL&                        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 ej                  dk(  rdZ	nej                  dk(  rdZ	ndZ	defd	Z
dd
ZddZddZej                  j                  ej                  dk(  d      dd       Zej                  j                  ej                  dk7  d      dd       ZddZddZddZddZy)    N)FakeNetlinuxz<^\[Errno 107\] (Transport endpoint is|Socket) not connected$darwinz&^\[Errno 57\] Socket is not connected$z^\[Errno 10057\] Unknown error$returnc                  :    t               } | j                          | S N)r   enable)fns    Z/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/trio/_tests/test_fakenet.pyr
   r
      s    	BIIKI    c                    K   t                t        j                  j                  t        j                  j                        } t        j                  j                  t        j                  j                        }| j	                  d       d {    | j                         \  }}|dk(  sJ |dk7  sJ t        j                  t        d      5 }| j	                  d       d {    d d d        j                  j                  t        j                  k(  sJ t        j                  t        d      5 }|j	                  d|f       d {    d d d        |j                  j                  t        j                  k(  sJ |j                  d	| j                                d {    | j                  d
       d {   \  }}|d	k(  sJ ||j                         k(  sJ | j                  d|j                                d {    |j                  d
       d {   \  }}|dk(  sJ || j                         k(  sJ y 7 7 b# 1 sw Y   bxY w7 
# 1 sw Y   
xY w7 7 7 d7 Mw)Ntype	127.0.0.1r   r   r   z^\[\w+ \d+\] Invalid argument$match)z	192.0.2.1r   z7^\[\w+ \d+\] (Address (already )?in use|Unknown error)$   xyz
      abc)r
   triosocket
SOCK_DGRAMbindgetsocknamepytestraisesOSErrorvalueerrnoEINVAL
EADDRINUSEsendtorecvfrom)s1s2ipportexcdataaddrs          r   test_basic_udpr,      s    D			!7!7		8B			!7!7		8B
''"
###~~HB19	/
 ( 
gg&'''	(
 99??ell** 
H
 + 
gg{D)***	+
 99??e....
))FBNN,
---{{2&JD$6>2>>###
))FBNN,
---{{2&JD$6>2>>####7 $ 	(	( ( 	+	+ + .& .&s   BI1IA I1I'I	(I,AI18IIIAI1(I))I1I+AI1I-	I1!I/"%I1	III1II&!	I1+I1-I1/I1c                    K   t                t        j                  j                  t        j                  j                        } t        j                  j                  t        j                  j                        }| j	                  d       d {    |j                  d| j                                d {    | j                  d       d {    y 7 F7  7 	w)Nr   r   r   r   )r
   r   r   r   r   r#   r   r$   r%   r&   s     r   test_msg_truncr/   =   s     D			!7!7		8B			!7!7		8B
''"
###
))FBNN,
---
++b/ $-s6   BCC'C9C:CCCCCc                  d	  K   t                t        j                  j                  t        j                  j                        } t        j                  j                  t        j                  j                        }t	        j
                  t        d      5  |j                  d       d{    ddd       | j                  d       d{    | j                         \  }}|dk(  sJ |dk7  sJ |j                  d	| j                                d{    | j                  d       d{   \  }}|d	k(  sJ ||j                         k(  sJ | j                  d
|j                                d{    |j                  d       d{   }|d
k(  sJ | j                  d|j                                d{   dk(  sJ t        d      }t	        j
                  t        d      5  |j                  |d       d{   \  }}ddd       |j                  |       d{   \  }}|dk(  sJ |dk(  sJ || j                         k(  sJ | j                  d|j                                d{   dk(  sJ t        d      }|j                  |       d{   }|dk(  sJ |dk(  sJ t        j                   dk(  r.t        j"                  j$                  dk(  rt        j&                  }	nd}	t	        j
                  t(        t*              5 }
|j-                  d       d{    ddd       
j.                  j0                  t0        j2                  k(  sJ t	        j
                  t        d      5  |j-                  d|	       d{    ddd       t	        j
                  t        d      5  |j                  d|	| j                                d{    ddd       t	        j
                  t4        d      5  |j                  d|	| j                         d       d{    ddd       y7 # 1 sw Y   xY w7 }7 77 !7 7 7 7 W# 1 sw Y   TxY w7 C7 7 7 K# 1 sw Y   KxY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 t# 1 sw Y   yxY ww)z!Test all recv methods for codecovr   zcode will most likely hangr   r   Nr   r   r   r   s   defs   ghi   z^partial recvfrom_into$   )nbytess
   ghi          jkls
   jkl       r   cpython      mnoz"^FakeNet send flags must be 0, notzwrong number of arguments$z	extra arg)r
   r   r   r   r   r   NotImplementedErrorrecvr   r   r#   r$   	bytearrayrecvfrom_into	recv_intosysplatformimplementationnameMSG_MOREr   ENOTCONN_MSGsendr   r    ENOTCONN	TypeError)r%   r&   r'   r(   r*   r+   bufr3   buf2flagsr)   s              r   test_recv_methodsrI   F   s    D			!7!7		8B			!7!7		8B 
*2N	O ggbk ''"
###~~HB19 ))FBNN,
---{{2&JD$6>2>>### ))FBNN,
---D6> 62>>#34499
B-C	*2L	M ?!//A/>>? ++C00NVTQ;&&&2>>### 62>>#34499R=D<<%%FQ;'''
||w3#5#5#:#:i#G__ 
wl	3 sggfo99??enn,,	#H
 % ggfe$$$% 
#H
 9 iir~~'78889 
y(E	F Fiir~~'7EEEF Fs 	  $ .&
 . 5 ?? ? 1 5% 	  	%% % 	99 9
 	FF Fs  BR0P>-P;.P>2R0QAR0QR00Q1AR07Q8R0Q.R0?Q /R0/Q QQ R0*Q-+AR08Q09(R0!Q3"A4R0Q9+Q6,Q90AR0<RRR#R0:%RR R$#R0&R$-R".R$2	R0;P>>Q	R0R0R0R0R0R0Q  Q*%	R00R03R06Q99R>R0RRR0RRR0"R$$R-)R0win32z"functions not in socket on windows)reasonc                  h  K   t         j                  dk7  rt                t        j                  j	                  t        j                  j
                        } t        j                  j	                  t        j                  j
                        }|j                  d       d {    t        j                  t        t              5 }|j                  dg       d {    d d d        j                  j                  t        j                  k(  sJ | j                  dgdd|j                                d {   d	k(  sJ |j!                  d
       d {   \  }}}}|dk(  sJ |g k(  sJ |dk(  sJ || j                         k(  sJ | j#                  d|j                                d {   dk(  sJ t%        d      }t%        d	      }|j'                  ||g       d {   }	|	\  }
}}}|
dk(  sJ |dk(  sJ |dk(  sJ |g k(  sJ |dk(  sJ || j                         k(  sJ | j#                  d|j                                d {   dk(  sJ t%        d      }|j'                  |g       d {   }	|	\  }
}}}|
dk(  sJ |dk(  sJ |g k(  sJ |t        j(                  k(  sJ || j                         k(  sJ t        j                  t*        d      5  | j-                  d       d {    d d d        y y 7 \7 %# 1 sw Y   %xY w7 7 7 j7 77 7 7 1# 1 sw Y   y xY ww)NrJ   r   r   r   r7   r4    r   r1   r   s   xyzw   r2   s   xys   zw s   xyzwv   z.^'FakeSocket' object has no attribute 'share'$)r=   r>   r
   r   r   r   r   r   r   r   rB   sendmsgr   r    rD   r   recvmsgr#   r:   recvmsg_into	MSG_TRUNCAttributeErrorshare)r%   r&   r)   r*   ancdata	msg_flagsr+   buf1rG   retr3   s              r   test_nonwindows_functionalityrZ      s     ||w
[[T[[%;%;<[[T[[%;%;<gg&''' ]]7,7 	'3**fX&&&	'yy%..00ZZ"a1ABBaGG13B+?(w	4v~"}A~r~~'''
 YYw(899Q>>||OOT4L11-0*)T{u}&&"}A~r~~''' YYx)9::a??|OOTF++-0*)T{u}"}F,,,,r~~''']]C
 	 ((1+		 	Y  	( '	' 	' C+? : 2 ;+ 		 	s   B#L2%L&#L2	LL L$AL2;L<L2LAL20L15L2&L'A&L2L )L27L"8A%L2L&2L$3L&7L2LL	L2L2L2L2 L2"L2$L&&L/+L2z#windows-specific fakesocket testingc                    K   t         j                  dk(  rt                t        j                  j	                  t        j                  j
                        } t        j                  j	                  t        j                  j
                        }| j                  d       d {    t        j                  t        d      5  | j                  dgdd|j                                d {    d d d        t        j                  t        d	      5  |j                  d       d d d        t        j                  t        d
      5  |j                  g        d d d        t        j                  t              5  | j                  d       d d d        y y 7 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY ww)NrJ   r   r   z0^'FakeSocket' object has no attribute 'sendmsg'$r   r4   rM   r   z0^'FakeSocket' object has no attribute 'recvmsg'$z5^'FakeSocket' object has no attribute 'recvmsg_into'$)r=   r>   r
   r   r   r   r   r   r   rT   rP   r   rQ   rR   r8   rU   r.   s     r   test_windows_functionalityr\      sn     ||w
[[T[[%;%;<[[T[[%;%;<gg&''']]E
 	@ **fXr1bnn.>???		@
 ]]E
 	 JJqM		
 ]]J
 	  OOB		 
 ]]./ 	HHQK	 	)  	(
 @		@ 	@
	 	
	  	 
	 	s   B#G%F&G'F,F-F1#GF(&#G	F4!G<G GFF%!G(F1-G4F=9G G	Gc                     K   t                t        j                  t              5  t        j
                  j                          d d d        y # 1 sw Y   y xY wwr   )r
   r   r   r8   r   r   rM   r   r   test_basic_tcpr^      s<     D	*	+   s   $AA	AAAc                  R  K   t                t        j                  j                  t        j                  j                        } t	        j
                  t        d      5  | j                  t        j                  t        j                         d d d        t	        j
                  t        d      5  | j                  t        j                  t        j                  d       d d d        t	        j
                  t        d      5  | j                  t        j                  t        j                  d       d d d        t	        j
                  t        d      5  | j                  t        j                  t        j                  d       d d d        | j!                  d       t	        j
                  t        d	      5  | j!                  d       d d d        | j#                         rJ y # 1 sw Y   \xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   NxY ww)
Nr   z0^FakeNet doesn't implement getsockopt\(\d, \d\)$r   z%^FakeNet always has IPV6_V6ONLY=True$Fz:^FakeNet doesn't implement setsockopt\(\d+, \d+, \.\.\.\)$Tr6   z(^FakeNet can't make inheritable sockets$)r
   r   r   r   r   r   r   
getsockoptIPPROTO_TCPTCP_NODELAYr8   
setsockoptIPPROTO_IPV6IPV6_V6ONLY
SOL_SOCKETSO_REUSEADDRset_inheritableget_inheritable)r%   s    r   test_not_implemented_functionsrj      s    D			!7!7		8B 
A
 > 	f((&*<*<=	> 
6
 F 	f))6+=+=uE	F
 
K
 E 	f))6+=+=tD	E
 
K
 A 	f'')<)<a@	A u	9
 ! 	4 	! !!###A> >F F
E E
A A! !s~   AH' /G)#H'20G6"#H'0H5#H'0H4H'<HH')G3.H'6H ;H'HH'HH'H$ H'c                     K   t                t        j                  j                  t        j                  j                        } t	        j
                  t        t              5 }| j                          d d d        j                  j                  t        j                  k(  sJ | j                  d       d {    t	        j
                  t        d      5  | j                          d d d        y # 1 sw Y   xY w7 E# 1 sw Y   y xY ww)Nr   r   r   zI^This method seems to assume that self._binding has a remote UDPEndpoint$)r
   r   r   r   r   r   r   rB   getpeernamer   r    rD   r   AssertionError)r%   r)   s     r   test_getpeernamern     s     D			!7!7		8B	wl	3 s
99??enn,,
''"
###	Z
  		   $ sC   A"D$C45AD:D ;DD+	D4C=9DDDc                  Z  K   t                t        j                  t        t	        j
                  dt        j                  j                               5  t        j                  j                         } d d d        t        j                  j                  t        j                  j                        } | j                         dk(  sJ | j                  d       d {    | j                         \  }}|dk(  sJ |dk7  sJ t        j                  j                  t        j                  t        j                        }|j                         dk(  sJ |j                  d       d {    |j                         ^}}}|d	k(  sJ |dk7  sJ |ddgk(  sJ y # 1 sw Y   'xY w7 7 >w)
Nz#FakeNet doesn't (yet) support type=r   r   )z0.0.0.0r   r   r   )familyr   )z::r   z::1)r
   r   r   r8   reescaper   r   SOCK_STREAMr   r   r   AF_INET6)r%   r'   r(   r&   _s        r   	test_initrv      s^    D	ii1$++2I2I1JK

 " [[!" 
		!7!7		8B>>~-- ''.
!!!~~HB19 
		6??9J9J		KB>>y(( '')
>>#LBq;19A;;7" " " s>   AF+F5A)F+F'BF+*F)+/F+F$	F+)F+)r   N)r    rq   r   r=   r   r   trio.testing._fake_netr   r>   rB   r
   r,   r/   rI   markskipifrZ   r\   r^   rj   rn   rv   rM   r   r   <module>rz      s     	  
   * <<7RL\\X<L5LG  $FBFJ LLG/  2	2j LLG0  	4%$P r   