3
Ydu$                 @   s  d Z ddlmZ ddlZddlmZ ddlm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dlmZ ddlmZ dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zej j!d$e"ed%d&gd'd(gd(d'gd)d* Z#d+d, Z$d-d. Z%dS )/z&Tests for the engine workflows module
    )globN)rmtree)product   )config)utility   )engine   )EngineTestInterface)UtilsTestInterfacec           
   C   sB   t jt tj  W d Q R X tjdd} t| jtjks>t	d S )Npipe)name)
pytestraises	TypeErrorpeWorkflowtype_graphnxZDiGraphAssertionError)r    r   ]/var/www/html/virt/lib/python3.6/site-packages/nipype/pipeline/engine/tests/test_workflows.py	test_init   s    r   c              C   s   t jdd} t jt dd}t jt dd}| j||dgfg || jj ksRt|| jj ksdt| jj||dd	gikstd S )
Nr   )r   mod2mod1output1input1connect)r   r   )r   r   )	r   r   Noder   r   r   nodesr   Zget_edge_data)r   r   r   r   r   r   test_connect   s    r"   c              C   sb   t jdd} t jt dd}t jt dd}| j||g || jj ksLt|| jj ks^td S )Nr   )r   r   r   )r   r   r    r   	add_nodesr   r!   r   )r   r   r   r   r   r   test_add_nodes&   s    r$   c              C   sz   t jtjddgddd} t jtjddgddd}t jdd}|j| d|d |j| d|d t|jj	 g ksvt
d S )Nab)fields)r   test)r   r    niuIdentityInterfacer   r   Z
disconnectlistr   edgesr   )r%   r&   flow1r   r   r   test_disconnect0   s    r.   c              C   s   t jtjddgddd} t jtjddgddd}t jtjddgddd}t jd	d}|j| d|d x4| ||gD ]&}tjt |j	|g W d Q R X qvW tjt |j||dgfg W d Q R X d S )Nr%   r&   )r'   n1)r   cdn2r(   n1.a)r3   r1   )
r   r    r)   r*   r   r   r   r   IOErrorr#   )r/   r2   n3Zw1noder   r   r   test_workflow_add9   s    r7   c              C   s   t jtjddgddd} t jtjddgddd}t jdd}|j| d|d tjt}|j| d|d W d Q R X dt	|j
kstt jtjddgddd}t jdd}tjt$}|j| |d	gf||d
gfg W d Q R X dt	|j
kstd S )Nr%   r&   )r'   )r   r(   zTrying to connectr0   test2)r&   r&   )r%   r&   )r   r    r)   r*   r   r   r   r   	Exceptionstrvaluer   )r%   r&   r-   excinfor0   r   r   r   test_doubleconnectF   s    (r=   c              C   s   t jtjddgddd} t jtjddgddd}t jtjddgddd}t jdd}t jdd}t jdd}|j|g |j| d|d	 tjt	}|j|d|d
 W d Q R X dt
|jkst|j|d|d d S )Nr%   r&   )r'   )r   r0   Ztest1r8   Ztest3zb.az	test1.b.azSome connections were not foundz	test1.b.b)r   r    r)   r*   r   r#   r   r   r   r9   r:   r;   r   )r%   r&   r0   r-   Zflow2Zflow3r<   r   r   r   "test_nested_workflow_doubleconnectV   s    r>   c           
   C   s  t jdd} ddddddd	d
ddg
}t jtj dd}|d d |j_||j_t jtj dd}|d d |j_t jtj dd}|d d |j_t jtj dd}|d d |j_||dgf||dgf||dgfg}tj	t
}| j| W d Q R X dt|jks
td S )NZtestidentity)r   r   r
      r   r               	   	selector1	selector2	selector3outinlistz&Duplicate node name "selector3" found.)rH   rI   )rH   rI   )rH   rI   )r   r   r    r)   ZSelectinputsindexrI   r   r   r4   r   r:   r;   r   )wfZoriginal_listrE   rF   rG   Z	selector4Zwf_connectionsr<   r   r   r   test_duplicate_node_checkf   s"    

rQ   c             C   s   dd l }|jj|j d}|jj|j d}|jj|j d}|jj|j dd}|jd x8||||gD ](}t|d}|jd|   W d Q R X qjW |||jj|j dfS )	Nr   z	file1.txtz	file2.txtz	file3.txtsubdirz	file4.txtwtz%d)ospathjoingetcwdmkdiropenwrite)arg1rT   file1file2file3Zfile4filenamefpr   r   r   _test_function   s    
ra   c       
      C   s   dd l }t| d}|j }W d Q R X |jj|j d}|jj|j d}|jj|j d}|||g}x4|D ],}	t|	d}|jd| |  W d Q R X qlW ||dfS )	Nr   rtz	file1.txtz	file2.txtz	file3.txtrS   z%dr
   )rT   rY   readrU   rV   rW   rZ   )
in_fileargrT   r`   Zin_argr\   r]   r^   filesr_   r   r   r   _test_function2   s    

 rg   c             C   s   | S )Nr   )re   r   r   r   _test_function3   s    rh   z/plugin, remove_unnecessary_outputs, keep_inputsZLinearZ	MultiProcFTc       
      C   s  t j  t jdd| t jdd| tjtjdddgtdd| jd	}d
|j	_
tjtjdddgtdd| jd	}d|j	_tjtjdgtdd| jd	}tjd| | jd	}|j|d|d |j|d tjjtjj|j|j|jdsttjjtjj|j|j|jdsttjjtjj|j|j|jds6ttjjtjj|j|j|jd|k	s`ttjjtjj|j|j|jdd|k	sttjjtjj|j|j|jd|k	sttjjtjj|j|j|jd|k	sttjt d| jd	}|j|d|d dd }	|j|d|	f|d ttjj|j|j |j|d tjjtjj|j|j|jdshttjjtjj|j|j|jdsttjjtjj|j|j|jd|k	sttjjtjj|j|j|jd|kstd S )N	executionremove_unnecessary_outputskeep_inputsZ	out_file1Z	out_file2dir)Zoutput_namesfunctionr/   )r   base_dirr
   nr2   r?   r5   Znode_rem_testrd   )pluginz	file1.txtz	file2.txtrR   z	file4.txtz	file3.txtn4c             S   s   | d S )Nr   r   )lr   r   r   
pick_first   s    z+test_outputs_removal_wf.<locals>.pick_firstr   re   )r   Zset_default_configsetr   r    r)   Functionra   ZstrpathrN   r[   rg   re   rh   r   r   runrT   rU   existsrV   rn   r   r   r   r   )
tmpdirrp   rj   rk   r/   r2   r5   rP   rq   rs   r   r   r   test_outputs_removal_wf   s\    


$&&&&ry   c               C   s   t dd S )NzGeneric error)FileNotFoundErrorr   r   r   r   _test_function4   s    r{   c             C   sp  | j   tjd}tj |_tjjtj d}tj| dd|ii|_	tj
tjtddd}|j|g y|j  W n tk
r   Y nX ttjj|d}t|d	ksttjjtj d
}tj| tjjtj d}tj| dd|ii|_	dd|ii|_	y|j  W n tk
r"   Y nX ttjj|d}t|d	ksHtttjj|d}t|dksltd S )Nr   crashdirri   Zcrashdump_dir)rm   Z	errorfunc)r   zcrash*r
   	crashdir2	crashdir3r   )chdirr   r   rT   rW   rn   rU   rV   rX   r   r    r)   ru   r{   r#   rv   RuntimeErrorr   lenr   )rx   rP   r|   r/   flr}   r~   r   r   r   test_config_setting  s8    




r   )&__doc__r   rT   shutilr   	itertoolsr   r   Znetworkxr    r   Z
interfacesr   r)   r	   r   Z	test_baser   Z
test_utilsr   r   r"   r$   r.   r7   r=   r>   rQ   ra   rg   rh   markZparametrizer+   ry   r{   r   r   r   r   r   <module>   s6   
	&X