
    Vh#                         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	 d dl
mZ  G d de	j                        Zd	d
dd	d
gd	d
igZ G d d      Z G d dej                         Zy)    N)dedent)sob)	Ephemeral)
components)unittestc                       e Zd Zy)DummyN__name__
__module____qualname__     E/home/dcms/DCMS/lib/python3.12/site-packages/twisted/test/test_sob.pyr	   r	          r   r	      hello)r   r   c                       e Zd Zy)
FakeModuleNr
   r   r   r   r   r      r   r   r   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)PersistTestsc                    t         D ]~  }t        j                  |d      }dj                         D ]S  }|j	                  |       |j                  d|z          t        j                  d|z   |      }| j                  ||       U  y )N source picklezpersisttest.filename)objectsr   
PersistentsplitsetStylesaveloadassertEqual)selfopstyleo1s        r   
testStyleszPersistTests.testStyles!   s}     	(Aq"%A(..0 (

5! 67XXnu4e<  B'	(	(r   c                 ,   t               }d|_        |j                  t        j                  t        j
                  |d             dj                         D ]  }t        j                  |      j                  |       t        j                  |      j                  d|z          t        j                  d|z   |      }| j                  |j                  |j                         | j                  t        j                  |      j                  |        y )N   lalar   zlala.r   )r	   foosetComponentr   IPersistabler   r   r    r!   r"   r#   r'   )r$   r%   r'   r(   s       r   testStylesBeingSetzPersistTests.testStylesBeingSet*   s    G	s''6)BC$**, 	@EQ((/Q$$go$>'E/51BQUUBFF+S--b177?	@r   c                 v    t        j                  dd      }| j                  t        |j                  dd       y)z?
        Calling save() with a passphrase is an error.
        Nobjectzfilename.pickleabc)
passphrase)r   
PersistantassertRaises	TypeErrorr!   )r$   r&   s     r   testPassphraseErrorz PersistTests.testPassphraseError5   s0     NN4*)QVV->5Qr   c                    g d}t        j                  |d      }dj                         D ]  }|j                  |       |j	                          t        j
                  d|d   z   |      }| j                  ||       dj                         D ]G  }|j	                  |       t        j
                  d|z   dz   |d   z   |      }| j                  ||       I  y )	Nr         r2   r   z	object.tar   z	lala lolozobject-z.ta)r   r   r   r    r!   r"   r#   )r$   r%   r&   r'   r(   tags         r   	testNameszPersistTests.testNames<   s    NN1h'$**, 	(EJJuFFH+a0%8BQ#"((* (sXXi#o5a@%H  B'(	(r   c                     t        dd      5 }|j                  d       d d d        t        j                  dd      }| j	                  |g d       y # 1 sw Y   4xY w)Nzpersisttest.pythonwzfoo=[1,2,3] r-   r:   )openwriter   loadValueFromFiler#   )r$   fr%   s      r   
testPythonzPersistTests.testPythonI   sS    &, 	$GGN#	$!!"6>I&	$ 	$s   AAc                 T   | j                  t        t        j                  d       | j	                  dt        j                  d             | j	                  dt        j                  d             | j	                  dt        j                  d             | j	                  dt        j                  d             | j	                  dt        j                  d             | j	                  d	t        j                  d
             | j	                  d	t        j                  d             y )Nz	file.blahpythonzfile.pyzfile.tacz	file.etacpicklezfile.tapz	file.etapsourcezfile.tasz	file.etas)r6   KeyErrorr   	guessTyper#   r$   s    r   testTypeGuesserzPersistTests.testTypeGuesserO   s    (CMM;?3==#;<3==#<=3==#=>3==#<=3==#=>3==#<=3==#=>r   c                 T   d| j                   _        | j                         }t        j                  |       t        j
                  j                  |d      }dat        |d      5 }|j                  t        d             ddd       t        j                  |d      }| j                  |t               | j                  |d   d       | j                  |d   d	       | j                  t        t                | j                  t        j"                  t                by# 1 sw Y   xY w)
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_getattrNr@   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__
            rI   r   zExpected attribute not set.zUnexpected attribute set.)fakeMaintestMainModGetattrmktemposmkdirpathjoinmainWhileLoadingrA   rB   r   r   r"   assertIsInstancelist
assertTruer   somethingElse)r$   dirnamer   rD   loadeds        r   testEverythingEphemeralGetattrz+PersistTests.testEverythingEphemeralGetattrY   s     ,-(++-
77<<)AB  (C  	AGG	& (H-fd+q	#@Aq	#>?.	:.<<iH3	 	s   %DD'c                    d| j                   _        | j                         }t        j                  |       t        j
                  j                  |d      }t        |d      5 }|j                  d       |j                  d       |j                  d       ddd       t        j                  |d       | j                  | j                   j                  d       y# 1 sw Y   FxY w)	zU
        Verify that _EverythingEphemeral.__setattr__ won't affect __main__.
        r   zpersisttest.ee_setattrr@   zimport __main__
z __main__.testMainModSetattr = 2
zapp = None
NrI   )rO   testMainModSetattrrQ   rR   rS   rT   rU   rA   rB   r   r"   r#   r$   r[   r   rD   s       r   testEverythingEphemeralSetattrz+PersistTests.testEverythingEphemeralSetattr   s     ,-(++-
77<<)AB(C  	$AGG'(GG78GGN#	$
 	8$991=	$ 	$s   #4CC%c                    | j                         }t        j                  |       t        j                  j	                  |d      }t        |d      5 }|j                  d       ddd       | j                  t        t        j                  |d       | j                  t        t        j                  d         t               y# 1 sw Y   `xY w)zW
        Test that an exception during load() won't cause _EE to mask __main__
        zpersisttest.ee_exceptionr@   zraise ValueError
NrI   __main__)rQ   rR   rS   rT   rU   rA   rB   r6   
ValueErrorr   r"   r#   typesysmodulesr   r`   s       r    testEverythingEphemeralExceptionz-PersistTests.testEverythingEphemeralException   s     ++-
77<<)CD(C  	*AGG()	* 	*chh(Cckk*56
C		* 	*s   CCc                 x    t         j                  d   | _        t               x| _        t         j                  d<   y)zi
        Replace the __main__ module with a fake one, so that it can be mutated
        in tests
        rc   N)rf   rg   realMainr   rO   rL   s    r   setUpzPersistTests.setUp   s+    
 J/2<,>J/r   c                 >    | j                   t        j                  d<   y)z8
        Restore __main__ to its original value
        rc   N)rj   rf   rg   rL   s    r   tearDownzPersistTests.tearDown   s     #'--Jr   N)r   r   r   r)   r0   r8   r>   rE   rM   r]   ra   rh   rk   rm   r   r   r   r   r       s=    (	@R('?(T>&D?0r   r   )rR   rf   textwrapr   twisted.persistedr   twisted.persisted.stylesr   twisted.pythonr   twisted.trialr   Componentizedr	   r   r   TestCaser   r   r   r   <module>ru      sl   
 
 
  ! . % "	J$$ 	
 LL	 	P08$$ P0r   