ó
[³XMc           @   sà   d  d l  Z  d  d l Z y d  d l Z Wn e k
 rA d Z n Xd  d l m Z d  d l m	 Z	 d  d l
 m Z d e j f d „  ƒ  YZ d d d d d g i d d 6g Z d	 e f d
 „  ƒ  YZ d e j f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   unittest(   t   sob(   t
   componentst   Dummyc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyR      s   i   t   hellot
   FakeModulec           B   s   e  Z RS(    (   R   R   (    (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyR      s   t   PersistTestCasec           B   s¤   e  Z d  „  Z d „  Z d „  Z d „  Z e d k rB d e _ n  d „  Z	 d „  Z
 e d k rl d e
 _ n  d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C   s…   x~ t  D]v } t j | d ƒ } x[ d j ƒ  D]M } | j | ƒ | j d d | ƒ t j d | | ƒ } |  j | | ƒ q, Wq Wd  S(   Nt    s   source picklet   filenames   persisttest.(   t   objectsR   t
   Persistentt   splitt   setStylet   savet   loadt   failUnlessEqual(   t   selft   ot   pt   stylet   o1(    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt
   testStyles   s    c         C   sÇ   t  ƒ  } d | _ | j t j t j | d ƒ ƒ x d j ƒ  D] } t j | ƒ j | ƒ t j | ƒ j d d | ƒ t j	 d | | ƒ } |  j
 | j | j ƒ |  j
 t j | ƒ j | ƒ q> Wd  S(   Ni   t   lalas   source pickleR
   s   lala.(   R   t   foot   setComponentR   t   IPersistableR   R   R   R   R   R   R   (   R   R   R   R   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   testStylesBeingSet(   s    		c         C   sÓ   d d d g } t  j | d ƒ } x« d j ƒ  D] } | j | ƒ | j ƒ  t  j d | d | ƒ } |  j | | ƒ xS d j ƒ  D]E } | j | ƒ t  j d	 | d
 | d | ƒ } |  j | | ƒ q‚ Wq. Wd  S(   Ni   i   i   t   objects   source pickles	   object.tai    s	   lala lolos   object-s   .ta(   R   R   R   R   R   R   R   (   R   R   R   R   R   t   tag(    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt	   testNames4   s    
"c         C   s”   x t  D]… } d } t j | d ƒ } xd d j ƒ  D]V } | j | ƒ | j d d | d | ƒ t j d | | | ƒ } |  j | | ƒ q2 Wq Wd  S(   Ns   once I was the king of spainR	   s   source pickleR
   s   epersisttest.t
   passphrase(   R   R   R   R   R   R   R   R   (   R   R   t   phraseR   R   R   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   testEncryptedStylesA   s    s&   PyCrypto required for encrypted configc         C   sU   t  d d ƒ } | j d ƒ | j ƒ  t j d d ƒ } |  j | d d d g ƒ d  S(   Ns   persisttest.pythont   ws   foo=[1,2,3] R   i   i   i   (   t   opent   writet   closeR   t   loadValueFromFileR   (   R   t   fR   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt
   testPythonM   s
    
c         C   sj   d } t  d d ƒ } | j t j | d ƒ ƒ | j ƒ  t j d d | ƒ } |  j | d d d g ƒ d  S(	   Ns   once I was the king of spains   epersisttest.pythonR#   s   foo=[1,2,3]R   i   i   i   (   R$   R%   R   t   _encryptR&   R'   R   (   R   R!   R(   R   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   testEncryptedPythonT   s    
c         C   sÉ   |  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 ƒ ƒ d  S(   Ns	   file.blaht   pythons   file.pys   file.tacs	   file.etact   pickles   file.taps	   file.etapt   sources   file.tass	   file.etas(   t   assertRaisest   KeyErrorR   t	   guessTypet   assertEqual(   R   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   testTypeGuesser_   s    c         C   sŽ   d |  j  _ |  j ƒ  } t j | ƒ t j j | d ƒ } t | d ƒ } | j d ƒ | j d ƒ | j d ƒ | j	 ƒ  t
 j | d ƒ d S(	   sD   
        Verify that _EverythingEphermal.__getattr__ works.
        i   s   persisttest.ee_getattrR#   s   import __main__
s:   if __main__.testMainModGetattr != 1: raise AssertionError
s   app = None
R.   N(   t   fakeMaint   testMainModGetattrt   mktempt   ost   mkdirt   patht   joint   fileR%   R&   R   R   (   R   t   dirnameR
   R(   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   testEverythingEphemeralGetattri   s    
c         C   s¤   d |  j  _ |  j ƒ  } t j | ƒ t j j | d ƒ } t | d ƒ } | j d ƒ | j d ƒ | j d ƒ | j	 ƒ  t
 j | d ƒ |  j |  j  j d ƒ d S(	   sU   
        Verify that _EverythingEphemeral.__setattr__ won't affect __main__.
        i   s   persisttest.ee_setattrR#   s   import __main__
s    __main__.testMainModSetattr = 2
s   app = None
R.   N(   R4   t   testMainModSetattrR6   R7   R8   R9   R:   R;   R%   R&   R   R   R2   (   R   R<   R
   R(   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   testEverythingEphemeralSetattr|   s    
c         C   sŽ   |  j  ƒ  } t j | ƒ t j j | d ƒ } t | d ƒ } | j d ƒ | j ƒ  |  j t	 t
 j | d ƒ |  j t t j d ƒ t ƒ d S(   sW   
        Test that an exception during load() won't cause _EE to mask __main__
        s   persisttest.ee_exceptionR#   s   raise ValueError
R.   t   __main__N(   R6   R7   R8   R9   R:   R;   R%   R&   R/   t
   ValueErrorR   R   R2   t   typet   syst   modulesR   (   R   R<   R
   R(   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt    testEverythingEphemeralException   s    
c         C   s+   t  j d |  _ t ƒ  |  _ t  j d <d S(   si   
        Replace the __main__ module with a fake one, so that it can be mutated
        in tests
        R@   N(   RC   RD   t   realMainR   R4   (   R   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   setUpŸ   s    c         C   s   |  j  t j d <d S(   s8   
        Restore __main__ to its original value
        R@   N(   RF   RC   RD   (   R   (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   tearDown§   s    N(   R   R   R   R   R   R"   t   Cryptot   Nonet   skipR)   R+   R3   R=   R?   RE   RG   RH   (    (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyR      s    									
				(   i   R   (   RC   R7   t   Crypto.Cipher.AESRI   t   ImportErrorRJ   t   twisted.trialR    t   twisted.persistedR   t   twisted.pythonR   t   ComponentizedR   R   R   R   t   TestCaseR   (    (    (    s9   /usr/lib/python2.7/dist-packages/twisted/test/test_sob.pyt   <module>   s   
	