
                             d Z ddlmZ ddlmZ ddlmZ ddlm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  G d dej                        Zy)zTests for execution_util.py.    )absolute_import)print_function)division)unicode_literalsN)mock)	exception)testcase)execution_utilc                   d   e Zd ZdZej
                  j                  ed      d        Zej
                  j                  ed      d        Z	ej
                  j                  ed      d        Z
ej
                  j                  ed      d        Zej
                  j                  ed      d        Zy)	TestExecutionUtilzTest execution utils.Popenc                 B   t        j                         }d|_        d|j                  _        ||_        t        j                  dg      \  }}| j                  |       | j                  |       |j                  dgt        j                  t        j                         y )Nr   )NNfake-commandstdoutstderr)r   Mock
returncodecommunicatereturn_valuer
   ExecuteExternalCommandassertIsNoneassert_called_once_with
subprocessPIPEself
mock_Popenmock_command_processr   r   s        2platform/gsutil/gslib/tests/test_execution_util.py"testExternalCommandReturnsNoOutputz4TestExecutionUtil.testExternalCommandReturnsNoOutput!   s    99;&'#4@$$12J#::N;KLNFFff&&'7.8oo.8oo ' ?    c                 F   t        j                         }d|_        d|j                  _        ||_        t        j                  dg      \  }}| j                  |d       | j                  |d       |j                  dgt        j                  t        j                         y )Nr   )abr   r$   r%   r   r   r   r   r   r   r
   r   assertEqualr   r   r   r   s        r    &testExternalCommandReturnsStringOutputz8TestExecutionUtil.testExternalCommandReturnsStringOutput0   s    99;&'#4>$$12J#::N;KLNFFVS!VS!&&'7.8oo.8oo ' ?r"   c                 F   t        j                         }d|_        d|j                  _        ||_        t        j                  dg      \  }}| j                  |d       | j                  |d       |j                  dgt        j                  t        j                         y )Nr   )   a   br   r$   r%   r   r&   r   s        r    %testExternalCommandReturnsBytesOutputz7TestExecutionUtil.testExternalCommandReturnsBytesOutput?   s    99;&'#4@$$12J#::N;KLNFFVS!VS!&&'7.8oo.8oo ' ?r"   c                 `   t        j                         }d|_        d|j                  _        ||_        | j                  t        j                        5  t        j                  dg       d d d        |j                  dgt        j                  t        j                         y # 1 sw Y   ;xY w)N   )Ns   errorr   r   )r   r   r   r   r   assertRaisesr   ExternalBinaryErrorr
   r   r   r   r   r   r   r   s      r    r!   z4TestExecutionUtil.testExternalCommandReturnsNoOutputN   s    99;&'#4D$$12J			988	9++^,<= 
: &&'7.8oo.8oo ' ? 
:	9s   B$$B-c                     t        j                         }d|_        d|j                  _        ||_        | j                  t        j                  d      5  t        j                  dg       d d d        y # 1 sw Y   y xY w)Nr.   )Ns   error.
errorr   )
r   r   r   r   r   assertRaisesRegexr   r0   r
   r   r1   s      r    (testExternalCommandRaisesFormattedStderrz:TestExecutionUtil.testExternalCommandRaisesFormattedStderr\   sb    99;&'#4G$$12J				 = =w	G++^,<= 
H	G	Gs   A44A=N)__name__
__module____qualname____doc__r   patchobjectr   r!   r(   r,   r5    r"   r    r   r      s    ::Z)? *? ::Z)? *? ::Z)? *? ::Z)? *? ::Z)> *>r"   r   )r9   
__future__r   r   r   r   r   unittestr   gslibr   gslib.testsr	   gslib.utilsr
   GsUtilUnitTestCaser   r<   r"   r    <module>rC      s9    # & %  '      &F>33 F>r"   