
                             S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSK	J
r
  SS	KJr  SS
KJr   " S S\R                  5      rg)zTests for execution_util.py.    )absolute_import)print_function)division)unicode_literalsN)mock)	exception)testcase)execution_utilc                   l   \ rS rSrSr\R                  R                  \S5      S 5       r	\R                  R                  \S5      S 5       r
\R                  R                  \S5      S 5       r\R                  R                  \S5      S 5       r	\R                  R                  \S5      S 5       rS	rg
)TestExecutionUtil   zTest execution utils.Popenc                 <   [         R                  " 5       nSUl        SUR                  l        X!l        [
        R                  " S/5      u  p4U R                  U5        U R                  U5        UR                  S/[        R                  [        R                  S9  g )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"testExternalCommandReturnsNoOutput4TestExecutionUtil.testExternalCommandReturnsNoOutput!   s    99;&'#4@$$12#::N;KLNFff&&'7.8oo.8oo ' ?    c                 @   [         R                  " 5       nSUl        SUR                  l        X!l        [
        R                  " S/5      u  p4U R                  US5        U R                  US5        UR                  S/[        R                  [        R                  S9  g )Nr   )abr   r&   r'   r   r   r   r   r   r   r
   r   assertEqualr   r   r   r   s        r!   &testExternalCommandReturnsStringOutput8TestExecutionUtil.testExternalCommandReturnsStringOutput0   s    99;&'#4>$$12#::N;KLNFVS!VS!&&'7.8oo.8oo ' ?r$   c                 @   [         R                  " 5       nSUl        SUR                  l        X!l        [
        R                  " S/5      u  p4U R                  US5        U R                  US5        UR                  S/[        R                  [        R                  S9  g )Nr   )   a   br   r&   r'   r   r(   r   s        r!   %testExternalCommandReturnsBytesOutput7TestExecutionUtil.testExternalCommandReturnsBytesOutput?   s    99;&'#4@$$12#::N;KLNFVS!VS!&&'7.8oo.8oo ' ?r$   c                 f   [         R                  " 5       nSUl        SUR                  l        X!l        U R                  [        R                  5         [        R                  " S/5        S S S 5        UR                  S/[        R                  [        R                  S9  g ! , (       d  f       N== f)N   )Ns   errorr   r   )r   r   r   r   r   assertRaisesr   ExternalBinaryErrorr
   r   r   r   r   r   r   r    s      r!   r"   r#   N   s    99;&'#4D$$12			988	9++^,<= 
: &&'7.8oo.8oo ' ? 
:	9s   B""
B0c                    [         R                  " 5       nSUl        SUR                  l        X!l        U R                  [        R                  S5         [        R                  " S/5        S S S 5        g ! , (       d  f       g = f)Nr2   )Ns   error.
errorr   )
r   r   r   r   r   assertRaisesRegexr   r4   r
   r   r5   s      r!   (testExternalCommandRaisesFormattedStderr:TestExecutionUtil.testExternalCommandRaisesFormattedStderr\   s`    99;&'#4G$$12				 = =w	G++^,<= 
H	G	Gs   A55
B N)__name__
__module____qualname____firstlineno____doc__r   patchobjectr   r"   r*   r/   r9   __static_attributes__r;   r$   r!   r   r      s    ::Z)? *? ::Z)? *? ::Z)? *? ::Z)? *? ::Z)> *>r$   r   )r@   
__future__r   r   r   r   r   unittestr   gslibr   gslib.testsr	   gslib.utilsr
   GsUtilUnitTestCaser   r;   r$   r!   <module>rJ      s9    # & %  '      &F>33 F>r$   