HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3/dist-packages/twisted/test/__pycache__/test_rebuild.cpython-38.pyc
U


W[/!�@s�ddlZddlZddlZddlmZddlmZddlmZddl	m
Z
e
jZGdd�d�a
Gd	d
�d
t
�ZGdd�de�ZGd
d�dee�aGdd�d�ZdaGdd�dej�ZGdd�dej�ZdS)�N)�unittest��rebuild)�_PY3�)�crash_test_dummyc@seZdZdS)�FooN��__name__�
__module__�__qualname__�r
r
�;/usr/lib/python3/dist-packages/twisted/test/test_rebuild.pyrsrc@seZdZdS)�BarNr	r
r
r
rrsrc@seZdZdS)�BazNr	r
r
r
rrsrc@seZdZdS)�BuzNr	r
r
r
rrsrc@s eZdZdZdd�Zdd�ZdS)�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.
    cCs
d|_dS)NF)�
hashCalled��selfr
r
r�__init__szHashRaisesRuntimeError.__init__cCsd|_td��dS)NTznot a TypeError!)r�RuntimeErrorrr
r
r�__hash__szHashRaisesRuntimeError.__hash__N)r
rr�__doc__rrr
r
r
rrsrc@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�RebuildTestszH
    Simple testcase for rebuilding, to at least exercise the code.
    cCsb|��|_t�|j�tj�|jd�|_t�|j�ttj�|jd�d���t	j�
d|j�dS)N�twisted_rebuild_fakelibz__init__.py�wr)Zmktemp�libPath�os�mkdir�path�join�fakelibPath�open�close�sys�insertrr
r
r�setUp.s

�zRebuildTests.setUpcCstj�|j�dS�N)r%r �removerrr
r
r�tearDown8szRebuildTests.tearDownc	Cs�ddlm}ddl}ddl}|�|td�tj�|j	d��ddl
m}|��}|�
�}|��}|�|��d�|�d�|�|td�tj�|j	d��t�|�|�
�}|�|��d	�|�|��d	�|�|��d
�|�|��d�dS)Nr)�sibpathzmyrebuilder1.pyzmyrebuilder.py)�myrebuilder�ag�������?zmyrebuilder2.py�c�d�b)Ztwisted.python.utilr+�shutil�timeZcopyfile�__file__rr r!r"rr,�A�BZInherit�assertEqualr-�sleeprr0)	rr+r1r2r,r-r0�iZb2r
r
r�test_FileRebuild<s(�
�
zRebuildTests.test_FileRebuildcCsBt�d�}tjtdd�|��|�|jtj�|�ttj�dS)z1
        Rebuilding an unchanged module.
        r-F)ZdoLogN)r�XrZdor6�	__class__�f�foo)r�xr
r
r�test_RebuildTs

zRebuildTests.test_RebuildcCs~t��}|�tjtj�|�tj�t�td�|�tj�}|��|�|j	tj�ddl
m}|�t
|jtjtjtj�dS)Nr)�
components)rZ
XComponentZ
setAdapterZIXZXAZgetComponentr�methodr6r;�twisted.pythonr@�assertRaises�
ValueErrorZregisterAdapterr:)rr>ZnewComponentr@r
r
r�test_ComponentInteractionfs
�z&RebuildTests.test_ComponentInteractioncCsXt�}Gdd�d�aGdd�dtt�at�|�t|d�sBtd��t|d�sTtd��dS)	Nc@seZdZdd�ZdS)rcSsdS�z.
                Dummy method
                Nr
rr
r
rr=~szFoo.fooN)r
rrr=r
r
r
rr}src@seZdZdZdS)r�
N)r
rrr>r
r
r
rr�srr=z"Missing method on rebuilt instancer>z+Missing class attribute on rebuilt instance)rrrrr�updateInstance�hasattr�AssertionError)rr0r
r
r�test_UpdateInstancexs
z RebuildTests.test_UpdateInstancecCs(ddlm}ddlm}|�|j�dS)Nrr)�banana)rBrZtwisted.spreadrL�latestClassZBanana)rrrLr
r
r�test_BananaInteraction�sz#RebuildTests.test_BananaInteractioncCs2t�add�}|�|�t�t�|�tj�dS)z~
        Rebuilding something that has a __hash__ that raises a non-TypeError
        shouldn't cause rebuild to die.
        cSsdadSr()�unhashableObjectr
r
r
r�_cleanup�sz1RebuildTests.test_hashException.<locals>._cleanupN)rrOZ
addCleanuprZ
assertTruer)rrPr
r
r�test_hashException�s


zRebuildTests.test_hashExceptionc	Csddlm}ddlm}Gdd�d|�}|�}|��|�|���|�t�}t	rh|�
tt�t|��n|�dt|��|�
||�
|��|�
|j|�
|j��|�
|j|�
|j��|�
||�
|��Gdd�d�}|�}|�
||�
|��d	d
�}|�
||�
|��dS)z5
        L{twisted.python.rebuild.Sensitive}
        rr)�	Sensitivec@seZdZdd�ZdS)z2RebuildTests.test_Sensitive.<locals>.TestSensitivecSsdSrFr
rr
r
r�test_method�sz>RebuildTests.test_Sensitive.<locals>.TestSensitive.test_methodN)r
rrrSr
r
r
r�
TestSensitive�srTz twisted.python.rebuild.Exceptionc@seZdZdZdS)z(RebuildTests.test_Sensitive.<locals>.Fooz%
            Dummy class
            N)r
rrrr
r
r
rr�srcSsdS)z&
            Dummy method
            Nr
r
r
r
r�
myFunction�sz/RebuildTests.test_Sensitive.<locals>.myFunctionN)rBrZtwisted.python.rebuildrRZrebuildUpToDateZassertFalseZneedRebuildUpdaterM�	Exceptionrr6�reprZassertInZlatestVersionOfrS)	rrrRrTZ
testSensitiveZnewExceptionrr=rUr
r
r�test_Sensitive�s2

�
��zRebuildTests.test_SensitiveN)
r
rrrr'r*r9r?rErKrNrQrXr
r
r
rr*s
rc@sNeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Ze	e
dd
�d
krJde_d
S)�
NewStyleTestszB
    Tests for rebuilding new-style classes of various sorts.
    cCst�d�|_|jtjd<dS�NZwhipping)�types�
ModuleType�mr%�modulesrr
r
rr'�szNewStyleTests.setUpcCstjd=|`dSrZ)r%r^r]rr
r
rr*�szNewStyleTests.tearDowncCs`d}t||jj�|j��}d|_t||jj�t�|�|�|jd�|�t	|�|jj�dS)zF
        Try to rebuild a new style class with slots defined.
        z2class SlottedClass(object):
    __slots__ = ['a']
�N)
�execr]�__dict__ZSlottedClassr-rrHr6�assertIs�type�rZclassDefinition�instr
r
r�
test_slots�s�

zNewStyleTests.test_slotscCsfd}t||jj�|j��}|�d�t||jj�t�|�|�|dd�|�t	|�|jj�dS)z6
        Try to rebuild a base type subclass.
        z#class ListSubclass(list):
    pass
�rN)
r`r]raZListSubclass�appendrrHr6rbrcrdr
r
r�test_typeSubclass�s�


zNewStyleTests.test_typeSubclasscCsJd}t||jj�|j��}dg|_d}t||jj�|�ttj|�dS)z�
        Test that when rebuilding an instance with a __slots__ attribute, it
        fails accurately instead of giving a L{rebuild.RebuildError}.
        z(class NotSlottedClass(object):
    pass
r-z class NotSlottedClass:
    pass
N)	r`r]raZNotSlottedClass�	__slots__rC�	TypeErrorrrHrdr
r
r�test_instanceSlotss�
�z NewStyleTests.test_instanceSlotsZ	ClassTypeNz+Old-style classes not supported on Python 3)r
rrrr'r*rfrirl�getattrr[�skipr
r
r
rrY�srY)r%rr[Z
twisted.trialrrBrZtwisted.python.compatr�rr=r<rr�objectrrrrOZTestCaserrYr
r
r
r�<module>s.