
    gk                     f    d dl Z d dlZd dlZddlmZ ddlmZ ej                  sJ  G d de      Zy)    N   )TestCase)fails_leakcheckc                   .    e Zd Zd Zd Zd Zed        Zy)GCTestsc                    t        j                  t        j                  t        j                        j	                               }t        j                           |       $dd l}t        d|j                   |                    | j                   |              | j                  t
        j                  t
        j                         y )Nr   zO IS NOT NONE.)weakrefrefgreenlet
getcurrentswitchgccollectsysprintgetrefcountassertIsNoneassertFalsegarbage)selfor   s      V/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/greenlet/tests/test_gc.pytest_dead_circular_refzGCTests.test_dead_circular_ref   s{    KK))(*=*=>EEGH


3?"COOAC$89!#RZZ0    c                 ,    G d dt         j                         } |       }||_        t        j                  |      }t	        j
                          | j                   |              | j                  t        j                  t        j                         y )Nc                       e Zd ZdZy)9GCTests.test_circular_greenlet.<locals>.circular_greenletN)__name__
__module____qualname__r    r   r   circular_greenletr      s    Dr   r"   )	r   r   r	   r
   r   r   r   r   r   )r   r"   r   s      r   test_circular_greenletzGCTests.test_circular_greenlet   sa    	 1 1 	KKN


!#RZZ0r   c                     G d dt         j                         } |       }t        j                  |      }t        j                          | j                   |              | j                  t        j                  t        j                         y )Nc                       e Zd Zd Zd Zy)4GCTests.test_inactive_ref.<locals>.inactive_greenletc                 Z    t         j                   j                  | | j                         y )N)run)r   __init__r(   r   s    r   r)   z=GCTests.test_inactive_ref.<locals>.inactive_greenlet.__init__$   s    !!**4TXX*>r   c                      y Nr!   r*   s    r   r(   z8GCTests.test_inactive_ref.<locals>.inactive_greenlet.run'       r   N)r   r   r    r)   r(   r!   r   r   inactive_greenletr&   #   s    ?r   r.   )r   r	   r
   r   r   r   r   r   )r   r.   r   s      r   test_inactive_refzGCTests.test_inactive_ref"   s\    	 1 1 	 KKN


!#RZZ0r   c                 ,    G d dt               g }t        j                         fd}t        j                  |      }||_        |j	                  |       |j                          ~~t        j                          t        j                          y )Nc                       e Zd Zd Zy);GCTests.test_finalizer_crash.<locals>.object_with_finalizerc                      y r,   r!   r*   s    r   __del__zCGCTests.test_finalizer_crash.<locals>.object_with_finalizer.__del__C   r-   r   N)r   r   r    r4   r!   r   r   object_with_finalizerr2   B   s    r   r5   c                              t        j                         _        	 j                          t        j                         `y # t         j                  $ r t        d       Y 5w xY w# t        j                         `w xY w)NzGot greenlet exit!)r   r   objectr   GreenletExitr   )r5   parents   r   greenlet_bodyz3GCTests.test_finalizer_crash.<locals>.greenlet_bodyG   sh    +@+BH!(1 '')0 (( ,*+, '')0s#   A A'$A* &A''A* *B )r7   r   r   arrayappendr   r   r   )r   r;   r:   gr5   r9   s       @@r   test_finalizer_crashzGCTests.test_finalizer_crash/   sq    &	F 	 $$&	1 m,Q	



r   N)r   r   r    r   r#   r/   r   r>   r!   r   r   r   r      s%    111 & &r   r   )	r   r	   r    r   	leakcheckr   GREENLET_USE_GCr   r!   r   r   <module>rB      s5    	    &  Hh Hr   