Ë
    ojš  ã                  ó  — 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y)é    )ÚannotationsN)ÚNoReturn©Úrebuild)ÚTestCaseé   )Úcrash_test_dummyc                  ó   — e Zd Zy)ÚFooN©Ú__name__Ú
__module__Ú__qualname__© ó    ú;/usr/lib/python3/dist-packages/twisted/test/test_rebuild.pyr   r      ó   „ Ør   r   c                  ó   — e Zd Zy)ÚBarNr   r   r   r   r   r      r   r   r   c                  ó   — e Zd Zy)ÚBazNr   r   r   r   r   r      r   r   r   c                  ó   — e Zd Zy)ÚBuzNr   r   r   r   r   r      r   r   r   c                  ó    — e Zd ZdZdd„Zdd„Zy)Ú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.
    c                ó   — d| _         y )NF)Ú
hashCalled©Úselfs    r   Ú__init__zHashRaisesRuntimeError.__init__+   s	   € Øˆ�r   c                ó&   — d| _         t        d«      ‚)NTznot a TypeError!)r   ÚRuntimeErrorr   s    r   Ú__hash__zHashRaisesRuntimeError.__hash__.   s   € ØˆŒÜÐ-Ó.Ð.r   N©ÚreturnÚNone)r%   r   )r   r   r   Ú__doc__r    r#   r   r   r   r   r   #   s   „ ñó ô/r   r   c                  óX   — 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y)ÚRebuildTestszH
    Simple testcase for rebuilding, to at least exercise the code.
    c                óà  — | j                  «       | _        t        j                  | j                  «       t        j                  j                  | j                  d«      | _        t        j                  | j                  «       t        t        j                  j                  | j                  d«      d«      j                  «        t        j                  j                  d| j                  «       y )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™7Ÿ<™<¨¯©Ð6OÓPˆÔÜ
�‰�×!Ñ!Ô"ÜŒR�W‰W�\‰\˜$×*Ñ*¨MÓ:¸CÓ@×FÑFÔHÜ�‰�‰˜˜4Ÿ<™<Õ(r   c                óV   — t         j                  j                  | j                  «       y ©N)r6   r1   Úremover.   r   s    r   ÚtearDownzRebuildTests.tearDownD   s   € Ü�‰�‰˜Ÿ™Õ%r   c                óL  — dd l }dd l}ddlm} |j	                   |t
        d«      t        j                  j                  | j                  d«      «       ddl
m} |j                  «       }|j                  «       }|j                  «       }| j                  |j!                  «       d«       |j#                  d«       |j	                   |t
        d«      t        j                  j                  | j                  d«      «       t%        j$                  |«       |j                  «       }| j                  |j'                  «       d	«       | j                  |j'                  «       d	«       | j                  |j!                  «       d
«       | j                  |j!                  «       d«       y )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*  € ÛÛå/à�‰Ù”HÐ/Ó0Ü�G‰G�L‰L˜×)Ñ)Ð+;Ó<ô	
õ	
ð �M‰M‹OˆØ�M‰M‹OˆØ×ÑÓ!ˆØ×Ñ˜Ÿ™› Ô$ð 	�
‰
�3ŒØ�‰Ù”HÐ/Ó0Ü�G‰G�L‰L˜×)Ñ)Ð+;Ó<ô	
ô 	�‰˜Ô$Ø�]‰]‹_ˆØ×Ñ˜Ÿ™› Ô%Ø×Ñ˜Ÿ™› Ô$Ø×Ñ˜Ÿ™› Ô$Ø×Ñ˜Ÿ™› Õ$r   c                ó   — t        j                  d«      }t        j                  t         d¬«       |j                  «        | j	                  |j
                  t         j                  «       | j	                  t        t         j                  «       y)z1
        Rebuilding an unchanged module.
        r@   F)ÚdoLogN)r	   ÚXr   ÚdorL   Ú	__class__ÚfÚfoo)r   Úxs     r   Útest_RebuildzRebuildTests.test_Rebuildh   s^   € ô ×Ñ˜sÓ#ˆä�‰Ô(°Õ6à	�‰ŒØ×Ñ˜Ÿ™Ô&6×&8Ñ&8Ô9à×ÑœÔ,×0Ñ0Õ1r   c                óR  — t        j                  «       }|j                  t         j                  t         j                  «       |j                  t         j                  «       t        j                  t         d«       |j                  t         j                  «      }|j                  «        | j                  |j                  t         j                  «       ddl
m} | j                  t        |j                  t         j                  t         j                  t         j                  «       y )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Ñ&9Ó:ˆà×ÑÔà×Ñ˜×/Ñ/Ô1A×1DÑ1DÔ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«       ‚y )	Nc                  ó   — e Zd Zdd„Zy)r   c                 ó   — y©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y)r   é
   N)r   r   r   rX   r   r   r   r   r   š   s   „ Ø‰Ar   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]   € ô ‹Eˆ÷	ñ 	ô	”#”sô 	ô 	×Ñ˜qÔ!Ü�q˜%Ô ÐFÐ"FÓFÐ Ü�q˜#ŒÐMÐ MÓM‰r   c                óT   — ddl m} ddlm}  |j                  |j
                  «       y )Nr   r   )Úbanana)rb   r   Útwisted.spreadrt   ÚlatestClassÚBanana)r   r   rt   s      r   Útest_BananaInteractionz#RebuildTests.test_BananaInteraction¡   s   € Ý*Ý)àˆ×Ñ˜FŸM™MÕ*r   c                ó²   — t        «       add„}| j                  |«       t        j                  t        «       | j	                  t        j
                  «       y)z~
        Rebuilding something that has a __hash__ that raises a non-TypeError
        shouldn't cause rebuild to die.
        c                 ó   — d a y 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§   s?   € ô 2Ó3Ðó	$ð 	�‰˜Ô!Ü�‰œÔ Ø�‰Ô(×3Ñ3Õ4r   c                ó¼  — ddl m} ddlm}  G d„ d|«      } |«       }|j	                  «        | j                  |j                  «       «        |j                  t        «      }| j                  t        t        «      t        |«      «       | j                  ||j                  |«      «       | j                  |j                  |j                  |j                  «      «       | j                  |j                  |j                  |j                  «      «       | j                  ||j                  |«      «       dd„}| j                  ||j                  |«      «       y)	z5
        L{twisted.python.rebuild.Sensitive}
        r   r   )Ú	Sensitivec                  ó   — e Zd Zdd„Zy)ú2RebuildTests.test_Sensitive.<locals>.TestSensitivec                 ó   — y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†   c                  ó   — y)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ô	˜Iô 	ñ &›ˆØ×%Ñ%Ô'Ø×Ñ˜×8Ñ8Ó:Ô;ð +�w×*Ñ*¬9Ó5ˆØ×Ñœœi›¬$¨|Ó*<Ô=Ø×Ñ˜ }×'DÑ'DÀ\Ó'RÔSð 	×ÑØ×%Ñ%Ø×)Ñ)¨-×*CÑ*CÓDô	
ð
 	×ÑØ×%Ñ%Ø×)Ñ)¨-×*CÑ*CÓDô	
ð
 	×Ñ˜¨×(EÑ(EÀmÓ(TÔUó	ð 	×Ñ˜ ]×%BÑ%BÀ:Ó%NÕOr   Nr$   )r   r   r   r'   r8   r<   rP   rY   rg   rr   rx   r   r’   r   r   r   r)   r)   7   s7   „ ñó)ó&ó%óB2ó"
ó,Nó$+ó5ô )Pr   r)   c                  ó0   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zy)ÚNewStyleTestszB
    Tests for rebuilding new-style classes of various sorts.
    c                ór   — t        j                  d«      | _        | j                  t        j                  d<   y ©NÚwhipping)ÚtypesÚ
ModuleTypeÚmr6   Úmodulesr   s    r   r8   zNewStyleTests.setUpè   s&   € Ü×!Ñ! *Ó-ˆŒØ"&§&¡&Œ�‰�JÒr   c                ó*   — t         j                  d= | `y r–   )r6   r›   rš   r   s    r   r<   zNewStyleTests.tearDownì   s   € Ü�K‰K˜
Ð#Ø‰Fr   c                óŠ  — d}t        || j                  j                  «       | j                  j                  «       }d|_        t        || j                  j                  «       t        j                  |«       | j                  |j                  d«       | j                  t        |«      | j                  j                  «       y)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ˆäˆ_˜dŸf™fŸo™oÔ.Ø�v‰v×"Ñ"Ó$ˆØˆŒÜˆ_˜dŸf™fŸo™oÔ.Ü×Ñ˜tÔ$Ø×Ñ˜Ÿ™ Ô#Ø�‰”d˜4“j $§&¡&×"5Ñ"5Õ6r   c                ó�  — d}t        || j                  j                  «       | j                  j                  «       }|j	                  d«       t        || j                  j                  «       t        j                  |«       | j                  |d   d«       | j                  t        |«      | j                  j                  «       y)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ˆäˆ_˜dŸf™fŸo™oÔ.Ø�v‰v×"Ñ"Ó$ˆØ�‰�AŒÜˆ_˜dŸf™fŸo™oÔ.Ü×Ñ˜tÔ$Ø×Ñ˜˜a™ !Ô$Ø�‰”d˜4“j $§&¡&×"5Ñ"5Õ6r   Nr$   )r   r   r   r'   r8   r<   r§   r¬   r   r   r   r”   r”   ã   s   „ ñó)óó7ô7r   r”   )Ú
__future__r   r/   r6   r˜   Útypingr   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�8ô iPôX'7�Hõ '7r   