ó
Y[c           @   s±   d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m	 Z
 d e
 j f d „  ƒ  YZ d e
 j f d „  ƒ  YZ e d	 k r­ e j ƒ  n  d S(
   s   Tests for certbot.lock.iÿÿÿÿN(   t   errors(   t   utilt   LockDirTestc           B   s&   e  Z d  Z e d „  ƒ Z d „  Z RS(   s    Tests for certbot.lock.lock_dir.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   lock_dir(   t   certbot.lockR   (   t   clst   argst   kwargsR   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   _call   s    c         C   sP   t  j |  j t j |  j |  j ƒ } t j j	 |  j d ƒ } t
 j | | ƒ d  S(   Ns   .certbot.lock(   t	   functoolst   partialt   assertRaisesR    t	   LockErrorR   t   tempdirt   ost   patht   joint	   test_utilt   lock_and_call(   t   selft   assert_raisest	   lock_path(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_it   s    (   t   __name__t
   __module__t   __doc__t   classmethodR   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyR      s   t   LockFileTestc           B   s•   e  Z d  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z e j d
 ƒ d „  ƒ Z e j d ƒ d „  ƒ Z RS(   s    Tests for certbot.lock.LockFile.c         O   s   d d l  m } | | | Ž  S(   Niÿÿÿÿ(   t   LockFile(   R   R   (   R   R   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyR      s    c         C   s2   t  t |  ƒ j ƒ  t j j |  j d ƒ |  _ d  S(   Ns	   test.lock(   t   superR   t   setUpR   R   R   R   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyR   "   s    c         C   sr   t  j d |  j d |  j f ƒ } | j ƒ  | j ƒ  |  j | j d ƒ |  j t	 j
 j |  j ƒ ƒ |  j ƒ  d  S(   Nt   targetR   i    (   t   multiprocessingt   ProcessR   R   t   startR   t   assertEqualt   exitcodet
   assertTrueR   R   t   existst   test_removed(   R   t   child(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_acquire_without_deletion&   s    

c         C   s;   t  j |  j t j |  j |  j ƒ } t j | |  j ƒ d  S(   N(	   R	   R
   R   R    R   R   R   R   R   (   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_contention2   s    c         C   sE   |  j  |  j ƒ } t | ƒ } |  j | | ƒ |  j d | k ƒ d  S(   Nt   acquired(   R   R   t   reprt   _test_repr_commonR%   (   R   t	   lock_filet   locked_repr(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_locked_repr7   s    c         C   sO   |  j  |  j ƒ } | j ƒ  t | ƒ } |  j | | ƒ |  j d | k ƒ d  S(   Nt   released(   R   R   t   releaseR,   R-   R%   (   R   R.   t   released_repr(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_released_repr=   s
    
c         C   s3   |  j  | j j | k ƒ |  j  |  j | k ƒ d  S(   N(   R%   t	   __class__R   R   (   R   R.   t	   lock_repr(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyR-   D   s    c            sl   t  t g ‰ t j ‰ ‡  ‡ ‡ f d †  } t j d ƒ   } | | _ ˆ  j ˆ  j ƒ Wd  QXˆ  j	 ˆ ƒ d  S(   Nc            s8   |  ˆ  j  k r. ˆ j d ƒ r. t j |  ƒ n  ˆ |  ƒ S(   s-   Wrap os.stat and maybe delete the file first.i    (   R   t   popR   t   remove(   R   (   R   t   should_deletet   stat(    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   delete_and_statL   s    s   certbot.lock.os.stat(
   t   Truet   FalseR   R:   t   mockt   patcht   side_effectR   R   t   assertFalse(   R   R;   t	   mock_stat(    (   R   R9   R:   s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt	   test_raceH   s    		c         C   s<   |  j  |  j ƒ } | j ƒ  |  j t j j |  j ƒ ƒ d  S(   N(   R   R   R2   RA   R   R   R&   (   R   R.   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyR'   W   s    
s   certbot.lock.fcntl.lockfc         C   si   d } t  | ƒ | _ y |  j |  j ƒ Wn, t  k
 rW } |  j | t | ƒ k ƒ n X|  j d ƒ d  S(   Ns   hi theres   IOError not raised(   t   IOErrorR@   R   R   R%   t   strt   fail(   R   t
   mock_lockft   msgt   err(    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_unexpected_lockf_err\   s    s   certbot.lock.os.statc         C   si   d } t  | ƒ | _ y |  j |  j ƒ Wn, t  k
 rW } |  j | t | ƒ k ƒ n X|  j d ƒ d  S(   Ns   hi theres   OSError not raised(   t   OSErrorR@   R   R   R%   RE   RF   (   R   RB   RH   RI   (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   test_unexpected_stat_errg   s    (   R   R   R   R   R   R   R)   R*   R0   R4   R-   RC   R'   R>   R?   RJ   RL   (    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyR      s   								t   __main__(   R   R	   R    R   t   unittestR>   t   certbotR    t   certbot.testsR   R   t   TempDirTestCaseR   R   R   t   main(    (    (    s;   /usr/lib/python2.7/dist-packages/certbot/tests/lock_test.pyt   <module>   s   X