ó
ûR‹_c           @   s°   d  d l  m Z m Z d „  Z d Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z m Z d  d l m Z m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d „  Z d S(   iÿÿÿÿ(   t   Popent   PIPEc          C   sR   t  d d d d g d t d t ƒ}  |  j ƒ  \ } } |  j rN t d ƒ ‚ n  | S(   Nt   svnt   lss   -Rt   foot   stdoutt   stderrs   something bad happened(   R    R   t   communicatet
   returncodet   RuntimeError(   t   processt   outt   err(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   my_func   s
    $	s(   testfixtures.tests.test_popen_docs.Popen(   t   TestCase(   t   call(   t   Replacert   ShouldRaiset   compare(   t	   MockPopent   PopenBehaviourt
   TestMyFuncc           B   s}   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 „  Z RS(   c         C   sE   t  ƒ  |  _ t ƒ  |  _ |  j j t |  j ƒ |  j |  j j ƒ d  S(   N(   R   R    R   t   rt   replacet   dotted_patht
   addCleanupt   restore(   t   self(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   setUp   s    c         C   sv   |  j  j d d d d d ƒt t ƒ  d ƒ t j  d d d d	 g d t d t ƒ} t t  j d
 | | j ƒ  g ƒd  S(   Ns   svn ls -R fooR   t   oR   t   eR   R   s   -RR   t   expected(   R    t   set_commandR   R   R   R   t	   all_callsR   (   R   R
   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_example   s    'c         C   sC   t  j d d d d d d d ƒt t d ƒ ƒ  t ƒ  Wd  QXd  S(	   Ns   svn ls -R fooR   R   R   R   R   i   s   something bad happened(   R    R    R   R	   R   (   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_example_bad_returncode-   s    c         C   su   t  ƒ  } | j d ƒ | d d t d t d t ƒ} | j d ƒ \ } } t | j d | j | j j d ƒ g ƒd  S(   Ns	   a commandR   R   t   shellR   R   (   R   R    R   t   TrueR   R   R!   t	   root_call(   R   R    R
   R   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_communicate_with_input6   s    	c         C   sp   t  ƒ  } | j d d d d d ƒ| d d t d t d t ƒ} t | j j ƒ  d ƒ t | j j ƒ  d ƒ d  S(   Ns	   a commandR   R   R   t   barR$   (   R   R    R   R%   R   R   t   readR   (   R   R    R
   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt    test_read_from_stdout_and_stderrC   s
    	c         C   s‰   t  ƒ  } | j d ƒ | d d t d t ƒ} | j j d ƒ | j j ƒ  t | j d | j	 | j	 j j d ƒ | j	 j j ƒ  g ƒd  S(   Ns	   a commandt   stdinR$   s	   some textR   (
   R   R    R   R%   R+   t   writet   closeR   R!   R&   (   R   R    R
   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_write_to_stdinL   s    	c         C   s   t  ƒ  } | j d d d ƒ| d ƒ } t | j d  ƒ t | j ƒ  d ƒ t | j d ƒ t | j d t j d ƒ t j d ƒ j ƒ  g ƒd  S(   Ns	   a commandR   i   R   (	   R   R    R   R   t   Nonet   waitR!   R   R    (   R   R    R
   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_wait_and_return_code[   s    	c         C   sm   t  ƒ  } | j d ƒ | d d t d t d t ƒ} | j d ƒ t | j d | j | j j d ƒ g ƒd  S(   Ns	   a commandR   R   R$   i    R   (   R   R    R   R%   t   send_signalR   R!   R&   (   R   R    R
   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_send_signalk   s    	c         C   s˜   t  ƒ  } | j d d d d d ƒ| d ƒ } x | j ƒ  d  k rF q1 Wt | j d ƒ t | j d | j | j j ƒ  | j j ƒ  | j j ƒ  g ƒd  S(   Ns	   a commandR   i   t
   poll_counti   R   (   R   R    t   pollR/   R   R   R!   R&   (   R   R    R
   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_poll_until_resultx   s    	c         C   ss   |  j  j d d d d ƒ t t ƒ  d ƒ t j  d d d d g d t d t ƒ} t t  j d	 | | j ƒ  g ƒd  S(
   NR   R   R   R   R   R   s   -RR   R   (   R    t   set_defaultR   R   R   R   R!   R   (   R   R&   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_default_behaviour‹   s    c            s}   t  d d d d ƒ t  d d ƒ g ‰  ‡  f d †  } |  j j d d	 | ƒt t d
 ƒ ƒ  t ƒ  Wd  QXt t ƒ  d ƒ d  S(   NR   R   R   i   R   R   c            s   ˆ  j  d ƒ S(   Ni    (   t   pop(   t   commandR+   (   t
   behaviours(    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt	   behaviour¡   s    s   svn ls -R fooR<   s   something bad happened(   R   R    R    R   R	   R   R   (   R   R<   (    (   R;   s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_multiple_responsesš   s    c         C   sM   |  j  j d d t ƒ  ƒt t d ƒ ƒ  t ƒ  Wd  QXt t ƒ  d ƒ d  S(   Ns   svn ls -R fooR<   s   something bad happenedR   (   R    R    t   CustomBehaviourR   R	   R   R   (   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_count_down¬   s    c         C   s³   |  j  j d d d ƒ|  j  j d d d ƒt t d ƒ d d ƒt j  d d	 t d
 t d t ƒ} t j  d d	 t d
 t d t ƒ} t t  j d | | | j ƒ  | j ƒ  g ƒd  S(   Ns   process --batch=0R   t   42s   process --batch=1t   13i   R   i7   R$   R   (	   R    R    R   t   process_in_batchesR   R%   R   R!   R   (   R   t   p1t   p2(    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   test_multiple_processesµ   s    !!	(   t   __name__t
   __module__R   R"   R#   R'   R*   R.   R1   R3   R6   R8   R=   R?   RE   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyR      s   															R>   c           B   s   e  Z d  d „ Z d „  Z RS(   i   c         C   s   | |  _  d  S(   N(   t
   fail_count(   R   RH   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   __init__Ê   s    c         C   sB   x2 |  j  d k r4 |  j  d 8_  t d d d d ƒ SWt d d ƒ S(   Ni    i   R   R   R   R   R   (   RH   R   (   R   R:   R+   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   __call__Í   s    (   RF   RG   RI   RJ   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyR>   È   s   c      
   C   s‰   g  } xC t  |  ƒ D]5 } | j t d t | ƒ d t d t d t ƒƒ q Wd } x0 | D]( } | j ƒ  \ } } | t | ƒ 7} qY W| S(   Ns   process --batch=R   R   R$   i    (   t   ranget   appendR    t   strR   R%   R   t   int(   t   nt	   processest   it   totalR
   R   R   (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyRB   Ô   s    N(   t
   subprocessR    R   R   R   t   unittestR   t   testfixtures.mockR   t   testfixturesR   R   R   t   testfixtures.popenR   R   R   t   objectR>   RB   (    (    (    s[   /var/www/syncserver/local/lib/python2.7/site-packages/testfixtures/tests/test_popen_docs.pyt   <module>   s   	±