ϪfddlmZddlZddlZddlZddlmZddlmZddl m Z ddl m Z e jZGdd aGd d tZGd d ZGddeeaGddZdaGdde ZGdde Zy)) annotationsN)NoReturnrebuild)TestCase)crash_test_dummyc eZdZy)FooN__name__ __module__ __qualname__;/usr/lib/python3/dist-packages/twisted/test/test_rebuild.pyr r rr c eZdZy)BarNr rrrrrrrrc eZdZy)BazNr rrrrrrrrc eZdZy)BuzNr rrrrrrrrc eZdZdZddZddZy)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. cd|_y)NF) hashCalledselfs r__init__zHashRaisesRuntimeError.__init__+s rc&d|_td)NTznot a TypeError!)r RuntimeErrorrs r__hash__zHashRaisesRuntimeError.__hash__.s-..rNreturnNone)r%r)r rr__doc__r r#rrrrr#s /rrcXeZdZdZd dZd dZd dZd dZd dZd dZ d dZ d d Z d d Z y ) RebuildTestszH Simple testcase for rebuilding, to at least exercise the code. c|j|_tj|jtjj |jd|_tj|j ttjj |j ddjtjjd|jy)Ntwisted_rebuild_fakelibz __init__.pywr) mktemplibPathosmkdirpathjoin fakelibPathopenclosesysinsertrs rsetUpzRebuildTests.setUp<s{{}  77<< 6OP !!" RWW\\$**M :C@FFH 4<<(rcVtjj|jyN)r6r1remover.rs rtearDownzRebuildTests.tearDownDs  %rcLddl}ddl}ddlm}|j |t dt jj|jdddl m }|j}|j}|j}|j|j!d|j#d|j |t dt jj|jdt%j$||j}|j|j'd |j|j'd |j|j!d |j|j!d y) Nr)sibpathzmyrebuilder1.pyzmyrebuilder.py) myrebuilderag?zmyrebuilder2.pycdb)shutiltimetwisted.python.utilr>copyfile__file__r/r1r2r3r+r?ABInherit assertEqualr@sleeprrC) rrDrEr>r?r@rCib2s rtest_FileRebuildzRebuildTests.test_FileRebuildGs*/ H/ 0 GGLL))+; <   MMO MMO    ! $ 3 H/ 0 GGLL))+; <   $ ]]_ % $ $ $rc tjd}tjtd|j|j |j tj|j t tjy)z1 Rebuilding an unchanged module. r@F)doLogN)r XrdorL __class__ffoo)rxs r test_RebuildzRebuildTests.test_Rebuildhs^   s #(6  &6&8&89 ,001rcRtj}|jtjtj|j tjt j td|j tj}|j|j|jtjddl m }|jt|jtjtjtjy)Nr) components)r XComponent setAdapterIXXA getComponentrmethodrLrUtwisted.pythonr[ assertRaises ValueErrorregisterAdapterrS)rrX newComponentr[s rtest_ComponentInteractionz&RebuildTests.test_ComponentInteractionys  ' ' ) %((*:*=*=> '**+(!,~~&6&9&9:  //1A1D1DE .    & &           rct}GddaGddttat j |t |dsJdt |dsJdy) NceZdZddZy)r cyz. Dummy method Nrrs rrWzFoo.foorNr$)r rrrWrrrr r  rr ceZdZdZy)r N)r rrrXrrrrrsArrrWz"Missing method on rebuilt instancerXz+Missing class attribute on rebuilt instance)rr rrrupdateInstancehasattr)rrCs rtest_UpdateInstancez RebuildTests.test_UpdateInstances] E    #s  q!q% F"FF q#M MMrcTddlm}ddlm}|j|j y)Nrr)banana)rbrtwisted.spreadrt latestClassBanana)rrrts rtest_BananaInteractionz#RebuildTests.test_BananaInteractions*)FMM*rctadd}|j|tjt|j tj y)z~ Rebuilding something that has a __hash__ that raises a non-TypeError shouldn't cause rebuild to die. cdayr:)unhashableObjectrrr_cleanupz1RebuildTests.test_hashException.._cleanups# rNr$)rr{ addCleanupr assertTruer)rr|s rtest_hashExceptionzRebuildTests.test_hashExceptions? 23 $ !  (334rcddlm}ddlm}Gdd|}|}|j |j |j |jt}|jttt||j||j||j|j|j|j|j|j|j|j|j||j|dd}|j||j|y) z5 L{twisted.python.rebuild.Sensitive} rr) SensitiveceZdZddZy)2RebuildTests.test_Sensitive..TestSensitivecyrkrrs r test_methodz>RebuildTests.test_Sensitive..TestSensitive.test_methodrlrNr$)r rrrrrr TestSensitiverrmrrcy)z& Dummy method Nrrrr myFunctionz/RebuildTests.test_Sensitive..myFunctionrlrNr$) rbrtwisted.python.rebuildrrebuildUpToDate assertFalseneedRebuildUpdaterv ExceptionrLreprlatestVersionOfr)rrrr testSensitive newExceptionrs rtest_SensitivezRebuildTests.test_Sensitives# +4 I  & %%' 88:;+w**95  i$|*<= }'D'D\'RS   % %  ) )-*C*C D   % %  ) )-*C*C D  (E(Em(TU  ]%B%B:%NOrNr$) r rrr'r8r<rPrYrgrrrxrrrrrr)r)7s7)&%B2" ,N$+ 5 )Prr)c0eZdZdZddZddZddZddZy) NewStyleTestszB Tests for rebuilding new-style classes of various sorts. crtjd|_|jtjd<yNwhipping)types ModuleTypemr6modulesrs rr8zNewStyleTests.setUps&!!*-"&&& Jrc*tjd=|`yr)r6rrrs rr<zNewStyleTests.tearDowns KK # Frcd}t||jj|jj}d|_t||jjt j ||j|jd|jt||jjy)zF Try to rebuild a new style class with slots defined. z*class SlottedClass: __slots__ = ['a'] N) execr__dict__ SlottedClassr@rrprLassertIstyperclassDefinitioninsts r test_slotszNewStyleTests.test_slotssL _dffoo.vv""$ _dffoo.t$ # d4j$&&"5"56rcd}t||jj|jj}|j dt||jjt j ||j|dd|jt||jjy)z6 Try to rebuild a base type subclass. z#class ListSubclass(list): pass rN) rrr ListSubclassappendrrprLrrrs rtest_typeSubclasszNewStyleTests.test_typeSubclasssE _dffoo.vv""$ A _dffoo.t$ a!$ d4j$&&"5"56rNr$)r rrr'r8r<rrrrrrrs) 7 7rr) __future__rr/r6rtypingrrbrtwisted.trial.unittestrr rWrVr rrrrr{r)rrrrrs# "+   #    #s  / /"iP8iPX'7H'7r