
    Yf                    6   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 ddlmZ ej        Z G d d	          a G d
 dt                    Z G d d          Z G d dee          a G d d          Zda G d de
          Z G d de
          ZdS )    )annotationsN)NoReturnrebuild)TestCase   )crash_test_dummyc                      e Zd ZdS )FooN__name__
__module____qualname__     K/var/www/html/env/lib/python3.11/site-packages/twisted/test/test_rebuild.pyr   r              Dr   r   c                      e Zd ZdS )BarNr   r   r   r   r   r      r   r   r   c                      e Zd ZdS )BazNr   r   r   r   r   r      r   r   r   c                      e Zd ZdS )BuzNr   r   r   r   r   r      r   r   r   c                  "    e Zd ZdZddZd	dZdS )
HashRaisesRuntimeErrorz
    Things that don't hash (raise an Exception) should be ignored by the
    rebuilder.

    @ivar hashCalled: C{bool} set to True when __hash__ is called.
    returnNonec                    d| _         d S )NF)
hashCalledselfs    r   __init__zHashRaisesRuntimeError.__init__+   s    r   r   c                .    d| _         t          d          )NTznot a TypeError!)r   RuntimeErrorr    s    r   __hash__zHashRaisesRuntimeError.__hash__.   s    -...r   Nr   r   )r   r   )r   r   r   __doc__r"   r%   r   r   r   r   r   #   sF                / / / / / /r   r   c                  Z    e Zd Z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S )RebuildTestszH
    Simple testcase for rebuilding, to at least exercise the code.
    r   r   c                   |                                  | _        t          j        | j                   t          j                            | j        d          | _        t          j        | j                   t          t          j                            | j        d          d                                           t          j        
                    d| j                   d S )Ntwisted_rebuild_fakelibz__init__.pywr   )mktemplibPathosmkdirpathjoinfakelibPathopenclosesysinsertr    s    r   setUpzRebuildTests.setUp<   s    {{}}
7<<6OPP
!"""RW\\$*M::C@@FFHHH4<(((((r   c                N    t           j                            | j                   d S N)r6   r1   remover.   r    s    r   tearDownzRebuildTests.tearDownD   s    %%%%%r   c                   dd l }dd l}ddlm} |                     |t
          d          t          j                            | j	        d                     ddl
m} |                                }|                                }|                                }|                     |                                d           |                    d           |                     |t
          d          t          j                            | j	        d                     t%          j        |           |                                }|                     |                                d	           |                     |                                d	           |                     |                                d
           |                     |                                d           d S )Nr   )sibpathzmyrebuilder1.pyzmyrebuilder.py)myrebuilderag?zmyrebuilder2.pycdb)shutiltimetwisted.python.utilr>   copyfile__file__r/   r1   r2   r3   r+   r?   ABInheritassertEqualr@   sleepr   rC   )	r!   rD   rE   r>   r?   r@   rC   ib2s	            r   test_FileRebuildzRebuildTests.test_FileRebuildG   s   //////GH/00GLL)+;<<	
 	
 	
	
 	
 	
 	
 	
 	
 MMOOMMOO!!$$$ 	

3GH/00GLL)+;<<	
 	
 	
 	$$$]]__%%%$$$$$$$$$$$r   c                    t          j        d          }t          j        t           d           |                                 |                     |j        t           j                   |                     t          t           j                   dS )z1
        Rebuilding an unchanged module.
        r@   F)doLogN)r	   Xr   dorL   	__class__ffoo)r!   xs     r   test_RebuildzRebuildTests.test_Rebuildh   ss     s##(6666	&6&8999,011111r   c                0   t          j                    }|                    t           j        t           j                   |                    t           j                   t          j        t           d           |                    t           j                  }|                                 |                     |j	        t           j                   ddl
m} |                     t          |j        t           j        t           j        t           j                   d S )Nr   )
components)r	   
XComponent
setAdapterIXXAgetComponentr   methodrL   rU   twisted.pythonr[   assertRaises
ValueErrorregisterAdapterrS   )r!   rX   newComponentr[   s       r   test_ComponentInteractionz&RebuildTests.test_ComponentInteractiony   s    '))	%(*:*=>>>	'*+++(!,,,~~&6&9::/1A1DEEE 	.-----&	
 	
 	
 	
 	
r   c                    t                      } G d d          a G d dt          t                    a t	          j        |           t          |d          s
J d            t          |d          s
J d            d S )	Nc                      e Zd ZddZdS )r   r   r   c                    dS z.
                Dummy method
                Nr   r    s    r   rW   zFoo.foo         r   Nr&   )r   r   r   rW   r   r   r   r   r      (             r   r   c                      e Zd ZdZdS )r   
   N)r   r   r   rX   r   r   r   r   r      s        AAAr   r   rW   z"Missing method on rebuilt instancerX   z+Missing class attribute on rebuilt instance)r   r   r   r   r   updateInstancehasattr)r!   rC   s     r   test_UpdateInstancez RebuildTests.test_UpdateInstance   s     EE	 	 	 	 	 	 	 		 	 	 	 	#s 	 	 	 	q!!!q%  FF"FFF q#MM MMMMMr   c                H    ddl m} ddlm}  |j        |j                   d S )Nr   r   )banana)rb   r   twisted.spreadrt   latestClassBanana)r!   r   rt   s      r   test_BananaInteractionz#RebuildTests.test_BananaInteraction   sA    ******))))))FM*****r   c                    t                      add}|                     |           t          j        t                     |                     t          j                   dS )z~
        Rebuilding something that has a __hash__ that raises a non-TypeError
        shouldn't cause rebuild to die.
        r   r   c                 
    d a d S r:   )unhashableObjectr   r   r   _cleanupz1RebuildTests.test_hashException.<locals>._cleanup   s    #r   Nr&   )r   r{   
addCleanupr   
assertTruer   )r!   r|   s     r   test_hashExceptionzRebuildTests.test_hashException   sd     233	$ 	$ 	$ 	$ 	!!!   (344444r   c                "   ddl m} ddlm}  G d d|          } |            }|                                 |                     |                                            |j        t                    }| 	                    t          t                    t          |                     | 	                    ||                    |                     | 	                    |j        |                    |j                             | 	                    |j        |                    |j                             | 	                    ||                    |                     d
d}| 	                    ||                    |                     d	S )z5
        L{twisted.python.rebuild.Sensitive}
        r   r   )	Sensitivec                      e Zd ZddZdS )2RebuildTests.test_Sensitive.<locals>.TestSensitiver   r   c                    dS rk   r   r    s    r   test_methodz>RebuildTests.test_Sensitive.<locals>.TestSensitive.test_method   rl   r   Nr&   )r   r   r   r   r   r   r   TestSensitiver      rm   r   r   r   r   c                     dS )z&
            Dummy method
            Nr   r   r   r   
myFunctionz/RebuildTests.test_Sensitive.<locals>.myFunction   rl   r   Nr&   )rb   r   twisted.python.rebuildr   rebuildUpToDateassertFalseneedRebuildUpdaterv   	ExceptionrL   reprlatestVersionOfr   )r!   r   r   r   testSensitivenewExceptionr   s          r   test_SensitivezRebuildTests.test_Sensitive   s    	+*****444444	 	 	 	 	I 	 	 	 &%%'''88::;;; +w*955i$|*<*<===}'D'D\'R'RSSS 	%))-*CDD	
 	
 	

 	%))-*CDD	
 	
 	

 	(E(Em(T(TUUU	 	 	 	 	]%B%B:%N%NOOOOOr   Nr&   )r   r   r   r'   r8   r<   rP   rY   rg   rr   rx   r   r   r   r   r   r)   r)   7   s         ) ) ) )& & & &% % % %B2 2 2 2"
 
 
 
,N N N N$+ + + +5 5 5 5 )P )P )P )P )P )Pr   r)   c                  2    e Zd ZdZd	dZd	dZd	dZd	dZdS )
NewStyleTestszB
    Tests for rebuilding new-style classes of various sorts.
    r   r   c                `    t          j        d          | _        | j        t          j        d<   d S Nwhipping)types
ModuleTypemr6   modulesr    s    r   r8   zNewStyleTests.setUp   s(    !*--"&&Jr   c                $    t           j        d= | `d S r   )r6   r   r   r    s    r   r<   zNewStyleTests.tearDown   s    K
#FFFr   c                j   d}t          || j        j                   | j                                        }d|_        t          || j        j                   t          j        |           |                     |j        d           |                     t          |          | j        j                   dS )zF
        Try to rebuild a new style class with slots defined.
        z*class SlottedClass:
    __slots__ = ['a']
   N)
execr   __dict__SlottedClassr@   r   rp   rL   assertIstyper!   classDefinitioninsts      r   
test_slotszNewStyleTests.test_slots   s     L_dfo...v""$$_dfo...t$$$###d4jj$&"566666r   c                   d}t          || j        j                   | j                                        }|                    d           t          || j        j                   t          j        |           |                     |d         d           |                     t          |          | j        j                   dS )z6
        Try to rebuild a base type subclass.
        z#class ListSubclass(list):
    pass
   r   N)
r   r   r   ListSubclassappendr   rp   rL   r   r   r   s      r   test_typeSubclasszNewStyleTests.test_typeSubclass   s     E_dfo...v""$$A_dfo...t$$$a!$$$d4jj$&"566666r   Nr&   )r   r   r   r'   r8   r<   r   r   r   r   r   r   r      sn         ) ) ) )   7 7 7 77 7 7 7 7 7r   r   )
__future__r   r/   r6   r   typing_extensionsr   rb   r   twisted.trial.unittestr    r	   rW   rV   r   r   r   r   r   r{   r)   r   r   r   r   <module>r      s   # " " " " " 				 



  & & & & & & " " " " " " + + + + + +      	 	 	 	 	 	 	 		 	 	 	 	# 	 	 		 	 	 	 	 	 	 		 	 	 	 	#s 	 	 	/ / / / / / / /"  iP iP iP iP iP8 iP iP iPX'7 '7 '7 '7 '7H '7 '7 '7 '7 '7r   