
    \d#                         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dS )    N)dedent)sob)	Ephemeral)
components)unittestc                       e Zd ZdS )DummyN__name__
__module____qualname__     5lib/python3.11/site-packages/twisted/test/test_sob.pyr	   r	              Dr   r	      hello)r   r   c                       e Zd ZdS )
FakeModuleNr
   r   r   r   r   r      r   r   r   c                   P    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dS )PersistTestsc                 *   t           D ]}t          j        |d          }d                                D ]^}|                    |           |                    d|z              t          j        d|z   |          }|                     ||           _d S )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0 ( (

5!!! 6777Xnu4e<<  B''''	(	( 	(r   c                 2   t                      }d|_        |                    t          j        t          j        |d                     d                                D ]}t          j        |                              |           t          j        |                              d|z              t          j	        d|z   |          }| 
                    |j        |j                   | 
                    t          j        |          j        |           d S )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    GG	s'6)B)BCCC$**,, 	@ 	@EQ((///Q$$go$>>>'E/511BQUBF+++S-b117????	@ 	@r   c                 v    t          j        dd          }|                     t          |j        dd           dS )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   s;     N4**)QV->5QQQQQr   c                    g d}t          j        |d          }d                                D ]}|                    |           |                                 t          j        d|d         z   |          }|                     ||           d                                D ]Q}|                    |           t          j        d|z   dz   |d         z   |          }|                     ||           Rd S )	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    IIN1h''$**,, 	( 	(EJJuFFHHH+a0%88BQ###"((** ( (sXi#o5a@%HH  B''''(	( 	(r   c                     t          dd          5 }|                    d           d d d            n# 1 swxY w Y   t          j        dd          }|                     |g d           d S )Nzpersisttest.pythonwzfoo=[1,2,3] r-   r:   )openwriter   loadValueFromFiler#   )r$   fr%   s      r   
testPythonzPersistTests.testPythonI   s    &,, 	$GGN###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$!"6>>III&&&&&s   377c                    |                      t          t          j        d           |                     dt          j        d                     |                     dt          j        d                     |                     dt          j        d                     |                     dt          j        d                     |                     dt          j        d                     |                     d	t          j        d
                     |                     d	t          j        d                     d S )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   (CM;???3=#;#;<<<3=#<#<===3=#=#=>>>3=#<#<===3=#=#=>>>3=#<#<===3=#=#=>>>>>r   c                    d| j         _        |                                 }t          j        |           t          j                            |d          }dat          |d          5 }|	                    t          d                     ddd           n# 1 swxY w Y   t          j        |d          }|                     |t                     |                     |d         d           |                     |d         d	           |                     t          t                      |                     t          j        t                      bdS )
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   sh    ,-(++--
7<<)ABB  (C   	AGG   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	& (H--fd+++q	#@AAAq	#>???.	:::.<iHHHs   '#BBBc                    d| j         _        |                                 }t          j        |           t          j                            |d          }t          |d          5 }|                    d           |                    d           |                    d           ddd           n# 1 swxY w Y   t          j
        |d           |                     | j         j        d           dS )	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    ,-(++--
7<<)ABB(C   	$AGG'(((GG7888GGN###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 	8$$$91=====s   %A B11B58B5c                    |                                  }t          j        |           t          j                            |d          }t          |d          5 }|                    d           ddd           n# 1 swxY w Y   |                     t          t          j
        |d           |                     t          t          j        d                   t                     dS )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     ++--
7<<)CDD(C   	*AGG()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*ch(CCCck*566
CCCCCs   A;;A?A?c                 x    t           j        d         | _        t                      x| _        t           j        d<   dS )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<   dS )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 R R( ( (' ' '? ? ?( ( (T> > >&D D D? ? ?0 0 0 0 0r   r   )rR   rf   textwrapr   twisted.persistedr   twisted.persisted.stylesr   twisted.pythonr   twisted.trialr   Componentizedr	   r   r   TestCaser   r   r   r   <module>ru      s)  
 
			 



       ! ! ! ! ! ! . . . . . . % % % % % % " " " " " "	 	 	 	 	J$ 	 	 	
 LL	 	 	 	 	 	 	 	P0 P0 P0 P0 P08$ P0 P0 P0 P0 P0r   