
    i                         S SK r S SKrSSKJr  SSKJr  SSKJr   " S S\5      r\S:X  a  S SK	r	\	R                  " 5         gg)	    N   )_test_extension)TestCase)ignores_leakcheckc                   f    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS r\S 5       rSrg)	CAPITests
   c                 z    U R                  S[        R                  " [        R                  " S 5      5      5        g )N2   c                      g)Nr    r       Y/var/www/ias/venv/lib/python3.13/site-packages/greenlet/tests/test_extension_interface.py<lambda>'CAPITests.test_switch.<locals>.<lambda>   s    br   )assertEqualr   test_switchgreenletselfs    r   r   CAPITests.test_switch   s,    ++H,=,=j,IJ	Lr   c           	         S n[         R                   " U5      nU R                  S[        R                  " USSS95        U R	                  [
        S5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)Nc                 
    X-  $ Nr   xys     r   adder+CAPITests.test_switch_kwargs.<locals>.adder   s	    5Lr            r   zargument 1 must be greenletznot a greenlet)r   r   r   test_switch_kwargsassertRaisesRegex	TypeError)r   r   gs      r   r#   CAPITests.test_switch_kwargs   sc    	e$O>>qAKL##I/LM../?@ NMMs   A66
Bc                     S n[         R                   " U5      R                  5       nU R                  S [        R                  " U5      5        g )Nc                      S n [         R                   " U 5      nUR                  5         [         R                  " 5       R                  R                  U5        [         R                  " 5       R                  R	                  [        S5      5        g )Nc                      [         R                  " 5       R                  R                  5         [         R                  " 5       R                  R                  5         [	        S5      e)Nz#Should never have reached this code)r   
getcurrentparentswitchAssertionErrorr   r   r   bar2CAPITests.test_setparent.<locals>.foo.<locals>.bar   sF    ##%,,335
 ##%,,335$%JKKr   zShould never reach this code)r   r-   r+   r,   throwr.   )r/   childs     r   foo%CAPITests.test_setparent.<locals>.foo   sg    L %%c*ELLN!((//6!((..=>@r   )r   r-   r   r   test_setparent)r   r3   	foo_childs      r   r5   CAPITests.test_setparent   s>    	@ %%c*113	==iHIr   c                 .    [         R                  " 5         g r   )r   test_getcurrentr   s    r   r9   CAPITests.test_getcurrent+   s    '')r   c                 R    U R                  S[        R                  " S 5      5        g )Nc                      g)Nr<   r   r   r   r   r   -CAPITests.test_new_greenlet.<locals>.<lambda>/   s    r   )r   r   test_new_greenletr   s    r   r?   CAPITests.test_new_greenlet.   s    o??LMr   c                 `    U R                  [        R                  [        R                  5        g r   )assertRaisesr   GreenletExitr   test_raise_dead_greenletr   s    r   test_raise_greenlet_dead"CAPITests.test_raise_greenlet_dead1   s"    !!?#K#K	Mr   c                 `    U R                  [        R                  [        R                  5        g r   )rB   r   errorr   test_raise_greenlet_errorr   s    r   rI   #CAPITests.test_raise_greenlet_error5   s     NNOEE	Gr   c                 H  ^ / mU4S jn[         R                   " U5      nUR                  5         [        R                  " U5        U R	                  [        T5      S5        U R                  [        TS   [        5      S5        U R	                  [        TS   5      SS5        g )Nc                    >  [         R                  " 5       R                  R                  5         g ! [         a*    T R                  [        R                  " 5       S   5         g [         R                   a    [        ef = f)Nr   )
r   r+   r,   r-   
ValueErrorappendsysexc_inforC   r.   )seens   r   r3   !CAPITests.test_throw.<locals>.foo<   s]    %##%,,335 /CLLN1-.(( %$$%s   -1 1A>$A>r   r   z"ValueError was not raised in foo()ztake that sucka!zmessage doesn't match)
r   r-   r   
test_throwr   len
assertTrue
isinstancerM   str)r   r3   r&   rQ   s      @r   rS   CAPITests.test_throw9   s    	% c"	
""1%TA&tAw
+0	2 	QL#	%r   c                    U R                  [        5       n[        R                  " [        R
                  " 5       [        [        5       U 5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz1throw() third argument must be a traceback object)
rB   r%   r   test_throw_exactr   r+   	Exceptionr   rW   	exceptionr   excs     r   test_non_traceback_param"CAPITests.test_non_traceback_paramO   sd    y)S,,##%	 * 	S]]+L	N *)s   9A==
Bc                 $   U R                  [        5       n[        R                  " [        R
                  " 5       [        5       [        5       S 5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nz0instance exception may not have a separate value)rB   r%   r   rZ   r   r+   r[   BaseExceptionr   rW   r\   r]   s     r   test_instance_of_wrong_type%CAPITests.test_instance_of_wrong_typeZ   sf    y)S,,##%	 * 	S]]+K	M *)s   =B
Bc                    U R                  [        5       n[        R                  " [        R
                  " 5       SS S 5        S S S 5        U R                  [        WR                  5      S5        g ! , (       d  f       N4= f)Nabcz1exceptions must be classes, or instances, not str)	rB   r%   r   rZ   r   r+   r   rW   r\   r]   s     r   test_not_throwableCAPITests.test_not_throwablef   sb    y)S,,##%	 * 	S]]+L	N *)s   -A11
A?c                    SSK Jn  SnU(       a  S/U-  nOS/U-  nSS 4SS 4S	S
 44 Hx  u  pEU R                  U5         [        U5       Vs/ s H	  oe" 5       PM     nnU Vs/ s H  n[        R
                  " U5      S-
  PM     n	nU R                  X5        S S S 5        Mz     g s  snf s  snf ! , (       d  f       M  = f)Nr   )PY314d   r"   r   c                  ^    [         R                  " [        R                  " [        5      5      $ r   )r   r   r   objectr   r   r   r   &CAPITests.test_leaks.<locals>.<lambda>{   s    _001B1B61JKr   r#   c                  ^    [         R                  " [        R                  " [        5      5      $ r   )r   r#   r   rm   r   r   r   r   rn   }   s    _778I8I&8QRr   r?   c                  6    [         R                  " [        5      $ r   )r   r?   rm   r   r   r   r   rn      s    _66v>r   ) rj   subTestrangerO   getrefcountr   )
r   rj   itersexpected_refsnamecaller_resultsirefss
             r   
test_leaksCAPITests.test_leaksq   s    C%KMC%KMKM!RT >@
LD d#-25\:\68\:    OOA&*  
   5 $#
 ; $#s*   B2B(B2%#B-B2(
B22
C	r   N)__name__
__module____qualname____firstlineno__r   r#   r5   r9   r?   rE   rI   rS   r_   rc   rg   r   r}   __static_attributes__r   r   r   r   r   
   sV    LAJ&*NMG%,	N
M	N 6 6r   r   __main__)rO   r   rq   r   r   	leakcheckr   r   r   unittestmainr   r   r   <module>r      s>    
    (~6 ~6B zMMO r   