
    h#                         S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr   " S S\	R                  5      rS	S
SS	S
/S	S
0/r " S S5      r " S S\R                   5      rg)    N)dedent)sob)	Ephemeral)
components)unittestc                       \ rS rSrSrg)Dummy    N__name__
__module____qualname____firstlineno____static_attributes__r       \/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/test/test_sob.pyr	   r	          r   r	      hello)r   r   c                       \ rS rSrSrg)
FakeModule   r   Nr   r   r   r   r   r      r   r   r   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)PersistTests    c                    [          H  n[        R                  " US5      nSR                  5        HQ  nUR	                  U5        UR                  SU-   S9  [        R                  " SU-   U5      nU R                  X5        MS     M     g )N source picklezpersisttest.filename)objectsr   
PersistentsplitsetStylesaveloadassertEqual)selfopstyleo1s        r   
testStylesPersistTests.testStyles!   sq    Aq"%A(..0

5! 67XXnu4e<  '	 1 r   c                 4   [        5       nSUl        UR                  [        R                  [        R
                  " US5      5        SR                  5        H  n[        R                  " U5      R                  U5        [        R                  " U5      R                  SU-   S9  [        R                  " SU-   U5      nU R                  UR                  UR                  5        U R                  [        R                  " U5      R                  U5        M     g )N   lalar   zlala.r    )r	   foosetComponentr   IPersistabler#   r$   r%   r&   r'   r(   r,   )r)   r*   r,   r-   s       r   testStylesBeingSetPersistTests.testStylesBeingSet*   s    G	s''6)BC$**,EQ((/Q$$go$>'E/51BQUUBFF+S--b177? -r   c                 r    [         R                  " SS5      nU R                  [        UR                  SSS9  g)z/
Calling save() with a passphrase is an error.
Nobjectzfilename.pickleabc)
passphrase)r   
PersistantassertRaises	TypeErrorr&   )r)   r+   s     r   testPassphraseError PersistTests.testPassphraseError5   s0     NN4*)QVV->5Qr   c                    / SQn[         R                  " US5      nSR                  5        H  nUR                  U5        UR	                  5         [         R
                  " SUS   -   U5      nU R                  X5        SR                  5        HH  nUR	                  U5        [         R
                  " SU-   S-   US   -   U5      nU R                  X5        MJ     M     g )	Nr         r9   r   z	object.tar   z	lala lolozobject-z.ta)r   r#   r$   r%   r&   r'   r(   )r)   r*   r+   r,   r-   tags         r   	testNamesPersistTests.testNames<   s    NN1h'$**,EJJuFFH+a0%8BQ#"((*sXXi#o5a@%H  ' + -r   c                     [        SS5       nUR                  S5        S S S 5        [        R                  " SS5      nU R	                  U/ SQ5        g ! , (       d  f       N:= f)Nzpersisttest.pythonwzfoo=[1,2,3] r3   rB   )openwriter   loadValueFromFiler(   )r)   fr*   s      r   
testPythonPersistTests.testPythonI   sL    &,GGN# -!!"6>I& -,s   A
A!c                 b   U R                  [        [        R                  S5        U R	                  S[        R                  " S5      5        U R	                  S[        R                  " S5      5        U R	                  S[        R                  " S5      5        U R	                  S[        R                  " S5      5        U R	                  S[        R                  " S5      5        U R	                  S	[        R                  " S
5      5        U R	                  S	[        R                  " S5      5        g )Nz	file.blahpythonzfile.pyzfile.tacz	file.etacpicklezfile.tapz	file.etapsourcezfile.tasz	file.etas)r=   KeyErrorr   	guessTyper(   r)   s    r   testTypeGuesserPersistTests.testTypeGuesserO   s    (CMM;?3==#;<3==#<=3==#=>3==#<=3==#=>3==#<=3==#=>r   c                 b   SU R                   l        U R                  5       n[        R                  " U5        [        R
                  R                  US5      nSq[        US5       nUR                  [        S5      5        SSS5        [        R                  " US5      nU R                  U[        5        U R                  US   S5        U R                  US   S	5        U R                  [        [         5        U R                  [        R"                  [         5        Bg! , (       d  f       N= f)
z
L{_EverythingEphermal.__getattr__} will proxy the __main__ module as an
L{Ephemeral} object, and during load will be transparent, but after
load will return L{Ephemeral} objects from any accessed attributes.
r   zpersisttest.ee_getattrNrI   a  
            app = []
            import __main__
            app.append(__main__.testMainModGetattr == 1)
            try:
                __main__.somethingElse
            except AttributeError:
                app.append(True)
            else:
                app.append(False)
            from twisted.test import test_sob
            test_sob.mainWhileLoading = __main__
            rS   r   zExpected attribute not set.zUnexpected attribute set.)fakeMaintestMainModGetattrmktemposmkdirpathjoinmainWhileLoadingrJ   rK   r   r   r'   assertIsInstancelist
assertTruer   somethingElse)r)   dirnamer!   rM   loadeds        r   testEverythingEphemeralGetattr+PersistTests.testEverythingEphemeralGetattrY   s     ,-(++-
77<<)AB  (C AGG !& (H-fd+q	#@Aq	#>?.	:.<<iH3 ! s   &D  
D.c                    SU R                   l        U R                  5       n[        R                  " U5        [        R
                  R                  US5      n[        US5       nUR                  S5        UR                  S5        UR                  S5        SSS5        [        R                  " US5        U R                  U R                   R                  S5        g! , (       d  f       NL= f)	zE
Verify that _EverythingEphemeral.__setattr__ won't affect __main__.
r   zpersisttest.ee_setattrrI   zimport __main__
z __main__.testMainModSetattr = 2
zapp = None
NrS   )rZ   testMainModSetattrr\   r]   r^   r_   r`   rJ   rK   r   r'   r(   r)   rf   r!   rM   s       r   testEverythingEphemeralSetattr+PersistTests.testEverythingEphemeralSetattr   s     ,-(++-
77<<)AB(C AGG'(GG78GGN# !
 	8$991= ! s   $4C
C,c                    U R                  5       n[        R                  " U5        [        R                  R	                  US5      n[        US5       nUR                  S5        SSS5        U R                  [        [        R                  US5        U R                  [        [        R                  S   5      [        5        g! , (       d  f       Ne= f)zG
Test that an exception during load() won't cause _EE to mask __main__
zpersisttest.ee_exceptionrI   zraise ValueError
NrS   __main__)r\   r]   r^   r_   r`   rJ   rK   r=   
ValueErrorr   r'   r(   typesysmodulesr   rl   s       r    testEverythingEphemeralException-PersistTests.testEverythingEphemeralException   s     ++-
77<<)CD(C AGG() ! 	*chh(Cckk*56
C	 ! s   C
Cc                 x    [         R                  S   U l        [        5       =U l        [         R                  S'   g)zQ
Replace the __main__ module with a fake one, so that it can be mutated
in tests
rp   N)rs   rt   realMainr   rZ   rV   s    r   setUpPersistTests.setUp   s+    
 J/2<,>J/r   c                 >    U R                   [        R                  S'   g)z(
Restore __main__ to its original value
rp   N)rx   rs   rt   rV   s    r   tearDownPersistTests.tearDown   s     #'--Jr   )rZ   rx   N)r   r   r   r   r.   r6   r?   rF   rN   rW   rh   rm   ru   ry   r|   r   r   r   r   r   r       s=    (	@R('?(T>&D?0r   r   )r]   rs   textwrapr   twisted.persistedr   twisted.persisted.stylesr   twisted.pythonr   twisted.trialr   Componentizedr	   r"   r   TestCaser   r   r   r   <module>r      sl   
 
 
  ! . % "	J$$ 	
 LL	 	P08$$ P0r   