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mZ ddlmZ ddl	m
Z
 dZddlZddlZG dd	 d	eZd
d ZdS )z'Additional handy utilities for testing
    N)CalledProcessError)mkdtemp   )package_checkZrestructuredtextc               @   s&   e Zd Zd
ddZdd Zdd Zd	S )	TempFATFS         ?c          &   C   sj  || _ t | _ttjd| _tjj| jd}tjj| jd| _	tjj| j	d| _
t|d}|jdt|d>   W dQ R X tj| j	 d|g}d	d
dd|| j	g}ytj|| j| jd W n, tk
r } ztd|W Y dd}~X nX ytj|| j| jd| _W n. tk
r0 } ztd|W Y dd}~X nX tj| j  | jj dk	rVtdt| j
dj  dS )a  Temporary filesystem for testing non-POSIX filesystems on a POSIX
        system.

        with TempFATFS() as fatdir:
            target = os.path.join(fatdir, 'target')
            copyfile(file1, target, copy=False)
            assert not os.path.islink(target)

        Arguments
        ---------
        size_in_mbytes : int
            Size (in MiB) of filesystem to create
        delay : float
            Time (in seconds) to wait for fusefat to start, stop
        wbZ	vfatblock	vfatmountz.canary       Nz	mkfs.vfatfusefatz-ozrw+z-f)argsstdoutstderrzmkfs.vfat failedzfusefat is not installedzfusefat terminated too soon)delayr   tmpdiropenosdevnulldev_nullpathjoinr
   canarywriteintmkdir
subprocess
check_callr   IOErrorPopenr   OSErrortimesleeppollclose)selfZsize_in_mbytesr   ZvfatfileZfobjZ	mkfs_argsZ
mount_argse r(   6/tmp/pip-build-7vycvbft/nipype/nipype/testing/utils.py__init__   s2     zTempFATFS.__init__c             C   s   | j S )N)r
   )r&   r(   r(   r)   	__enter__J   s    zTempFATFS.__enter__c             C   s   | j d k	rn| j jtj x4tdD ]}tjd | j j d k	r"P q"W | j j  tj| j	 t
jj| j snt| jj  tj| j d S )N
   g?)r   send_signalsignalSIGINTranger"   r#   r$   	terminater   r   r   existsr   AssertionErrorr   r%   shutilrmtreer   )r&   exc_typeexc_valexc_tbcountr(   r(   r)   __exit__M   s    



zTempFATFS.__exit__N)r   r   )__name__
__module____qualname__r*   r+   r:   r(   r(   r(   r)   r      s   
4r   c             C   s$   t j| tjd}t jj|| |S )N   )nbZNifti1ImagenpZeyeZnifti1save)ZndarrayfilenameZtoyr(   r(   r)   save_toy_nii^   s    rC   )__doc__r   r"   r4   r.   r   r   tempfiler   Z
utils.miscr   Z__docformat__numpyr@   Znibabelr?   objectr   rC   r(   r(   r(   r)   <module>   s   I