Ë
    oj#  ã                   óÎ   — 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__© ó    ú7/usr/lib/python3/dist-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Ü—X‘X˜n¨uÑ4°eÓ<�Ø× Ñ   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Ó1ˆBØ×Ñ˜QŸU™U B§F¡FÔ+Ø×Ñœ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   € ô �N‰N˜4 Ó*ˆØ×Ñœ) Q§V¡VÐ->È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Â   € ÚˆÜ�N‰N˜1˜hÓ'ˆØ$×*Ñ*Ó,ò 	(ˆEØ�J‰J�uÔØ�F‰FŒHÜ—‘˜+¨¨a©Ñ0°%Ó8ˆBØ×Ñ˜Q Ô#Ø"×(Ñ(Ó*ò (�Ø—‘�s”Ü—X‘X˜i¨#™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   € ÜÐ&¨Ó,ð 	$°Ø�G‰G�NÔ#÷	$ä×!Ñ!Ð"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Ç   € Ø×Ñœ(¤C§M¡M°;Ô?Ø×Ñ˜¤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ñ   € ð ,-ˆ�‰Ô(à—+‘+“-ˆÜ
�‰�Ôä—7‘7—<‘< Ð)AÓBˆð  ÐÜ�(˜CÓ ð 	 AØ�G‰GÜðóô÷	ô& —‘˜( HÓ-ˆØ×Ñ˜f¤dÔ+Ø�‰˜˜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­   € ð ,-ˆ�‰Ô(à—+‘+“-ˆÜ
�‰�Ôä—7‘7—<‘< Ð)AÓBˆÜ�(˜CÓ ð 	$ AØ�G‰GÐ'Ô(Ø�G‰GÐ7Ô8Ø�G‰G�NÔ#÷	$ô
 	�‰�˜8Ô$à×Ñ˜Ÿ™×9Ñ9¸1Õ=÷	$ð 	$ú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–   € ð —+‘+“-ˆÜ
�‰�ÔÜ—7‘7—<‘< Ð)CÓDˆä�(˜CÓ ð 	* AØ�G‰GÐ(Ô)÷	*ð 	×Ñœ*¤c§h¡h°¸(ÔCØ×ÑœœcŸk™k¨*Ñ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0�8×$Ñ$õ P0r   