3
d                 @   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ZddlZddl	Z	ej
Z
ejZe	jjZejjZejZejjZejjZejjZejZdd ZdddZdS )	z
Helper for testing.
    Nc                 s   t j d fdd	} | t _dS )z& Redirect all warnings to stdout.
    Nr   c                s    | |t jj||tj d S )N)ospathbasenamesysstdout)msgcatfnamelnofileline)showwarning_orig 0/tmp/pip-build-v9q4h5k9/joblib/joblib/testing.pyshowwarning    s    z'warnings_to_stdout.<locals>.showwarning)Nr   )warningsr   )r   r   )r   r   warnings_to_stdout   s    r      c       	   
      s   t j t jt jd fdd}tj||}z|j  j \}}|j |j  }}jdkrxdj	j||}t
||dk	rtj|| rt
dj	|||dk	rtj|| rt
dj	||W d|j  X dS )	zRuns a command in a subprocess with timeout in seconds.

    Also checks returncode is zero, stdout if stdout_regex is set, and
    stderr if stderr_regex is set.
    )r   stderrc                  s   t jdj  j  d S )NzTimeout running {})r   warnformatkillr   )cmdprocr   r   kill_process1   s    z+check_subprocess_call.<locals>.kill_processr   z/Non-zero return code: {}.
Stdout:
{}
Stderr:
{}Nz,Unexpected stdout: {!r} does not match:
{!r}z,Unexpected stderr: {!r} does not match:
{!r})
subprocessPopenPIPE	threadingTimerstartcommunicatedecode
returncoder   
ValueErrorresearchcancel)	r   timeoutZstdout_regexZstderr_regexr   Ztimerr   r   messager   )r   r   r   check_subprocess_call'   s.    



r*   )r   NN)__doc__r   r   os.pathr   r%   r   r   ZpytestZ_pytestZraisesZwarnsZrunnerZSkippedZSkipTestmarkZskipifZfixtureZparametrizer(   Zxfailparamr   r*   r   r   r   r   <module>   s(    