3
Xd:                 @   s  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m	Z	 ddl
mZ ddlmZ dd	lmZ d
dlmZ ejdddd Zdd Zdd Zejj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"d*d+ Z#d,d- Z$dS ).    N   )split_filename   )base)traits	Undefined)fsl)Function)Node   )get_filecopy_infomodule)Zscopec          	   C   sD   |j d}|jd}|jd}|jdg W d Q R X |j  |jS )Nfileszfoo.txtwZ	123456789)mktempjoinopen
writelineschdirZstrpath)requestZtmpdir_factorytmp_dir
tmp_infilefp r   Y/var/www/html/virt/lib/python3.6/site-packages/nipype/interfaces/base/tests/test_specs.py
setup_file   s    

r   c           
      s   t j j stt j j dks$tG dd dt j   jtksFt  jdksVt fdd} tj	t j
j | d W d Q R X  dd}ddgdf}|j |kst|j dkstd S )Nz

c               @   s"   e Zd ZejjZejjddZdS )ztest_TraitedSpec.<locals>.specT)
usedefaultN)	__name__
__module____qualname__nibr   IntfooFloatgoor   r   r   r   spec"   s   r%   g        c                s
    | dS )N)hoor   )x)r%   r   r   <lambda>(   s    z"test_TraitedSpec.<locals>.<lambda>   )r"   r"   r$   0.0000000000Z e89433b8c9141aa0fda2f8f4d662c047z
foo = 1
goo = 0.0
)r"   r)   )r$   r*   )r    TraitedSpecget_hashvalAssertionError__repr__r"   r   r$   pytestraisesr   
TraitError)Zspecfuncinfieldshashvalr   )r%   r   test_TraitedSpec   s    
r4   c              C   sx   t tj dd} tj }| jj }| jj }t| jjt|ksDtt|jjt|ks\tt| jjt|ksttd S )NZbet)name)	r
   r   ZBETinputsZclass_editable_traitsoutputsset__all__r-   )Zbet_ndZbet_interfaceZ
bet_inputsZbet_outputsr   r   r   test_TraitedSpec_tab_completion4   s    

r:   c                 s   ddl m} m} tj   jdtjj d _ fdd}t	j
t
 | W d Q R X |  }||fdd}t	j
t
 | W d Q R X d S )Nr   )dumpsloadsr"   r)   c                  s   t  ddS )Nr"   a)setattrr   )r=   r   r   r(   I   s    z*test_TraitedSpec_dynamic.<locals>.<lambda>c                  s   t  ddS )Nr"   r=   )r>   r   )unpkld_ar   r   r(   N   s    )pickler;   r<   r    ZBaseTraitedSpec	add_traitr   r!   r"   r/   r0   	Exception)r;   r<   Zassign_aZpkld_aZassign_a_againr   )r=   r?   r   test_TraitedSpec_dynamicB   s    rC   c              C   s   dd } t dgddg| d}tt dgdg| ddd}t|jj }t|jj|ksXtt|jj|ksltt|jj }t|jj|kst|jj	j
d	 |jd	 t|jj|kstd S )
Nc             S   s   | d S )Nr   r   )list_outr   r   r   extract_funcT   s    z<test_DynamicTraitedSpec_tab_completion.<locals>.extract_funcrD   out_fileZanother_file)Zinput_namesZoutput_namesfunctionlist_extract)r5   Zadded_out_trait)r	   r
   r8   r6   Zeditable_traitsr9   r-   r7   Z
_interfaceZ_output_namesappendadd)rE   Zfunc_interfacerH   Zexpected_inputZexpected_outputr   r   r   &test_DynamicTraitedSpec_tab_completionS   s"    
rK   c           	      s   G dd dt jG dd dt jG fdddt j} |   d j_ jjdksZt fdd	}tjt |  W d Q R X  jjdkstd
 j_	 jj	dkstd S )Nc               @   sB   e Zd Zd
ZejjeddZejjeddZejj	ddddZ
d	S )z%test_TraitedSpec_logic.<locals>.spec3r"   barzfoo or bar, not both)xordesczbar or foo, not bothr   zkung foo)requirespositionrN   N)r"   rL   )r"   )r   r   r   Z_xor_inputsr    r   r!   r"   rL   r#   kungr   r   r   r   spec3w   s   rR   c               @   s   e Zd ZejjZdS )z$test_TraitedSpec_logic.<locals>.out3N)r   r   r   r    r   r!   outputr   r   r   r   out3~   s   rT   c                   s   e Zd ZZ ZdS )z+test_TraitedSpec_logic.<locals>.MyInterfaceN)r   r   r   
input_specZoutput_specr   )rT   rR   r   r   MyInterface   s   rV   r)   c                  s   t  jddS )NrL   r)   )r>   r6   r   )myifr   r   r(      s    z(test_TraitedSpec_logic.<locals>.<lambda>r   g       @)
r    r+   BaseInterfacer6   r"   r-   r/   r0   IOErrorrQ   )rV   Zset_barr   )rW   rT   rR   r   test_TraitedSpec_logicv   s    rZ   c           >      sP  t jddj} t jddt G dd dtj}|   fdd}tjtj |  W d Q R X t	| d	ksrt
d
W d Q R X t jddj} t jddt G dd dtj}|   fdd}tjtj |  W d Q R X t	| d	kst
d
W d Q R X t jdd} t jddt G dd dtj}|  d}y
d _W n tjk
rV   d}Y nX |sbt
t	| dkst
ddd | D  W d Q R X t jdd} t jddt G dd dtj}|  d}y
d _W n tjk
r   d}Y nX |st
 jtkst
 jdkst
t	| dksBt
ddd | D  W d Q R X d S )NT)recordalways c               @   s   e Zd ZejjddZdS )z*test_deprecation.<locals>.DeprecationSpec1z0.1)
deprecatedN)r   r   r   r    r   r!   r"   r   r   r   r   DeprecationSpec1   s   r_   c                  s   t  ddS )Nr"   r)   )r>   r   )spec_instancer   r   r(      s    z"test_deprecation.<locals>.<lambda>r   zno warnings, just errorsc               @   s   e Zd ZejjdddZdS )z*test_deprecation.<locals>.DeprecationSpec2Z100rL   )r^   new_nameN)r   r   r   r    r   r!   r"   r   r   r   r   DeprecationSpec2   s   rb   c                  s   t  ddS )Nr"   r)   )r>   r   )r`   r   r   r(      s    c               @   s&   e Zd ZejjdddZejj ZdS )z*test_deprecation.<locals>.DeprecationSpec31000rL   )r^   ra   N)r   r   r   r    r   r!   r"   rL   r   r   r   r   DeprecationSpec3   s   rd   r)   Fzdeprecated warning 1 c             S   s   g | ]}t |qS r   )str).0w1r   r   r   
<listcomp>   s    z$test_deprecation.<locals>.<listcomp>c               @   s&   e Zd ZejjdddZejj ZdS )z*test_deprecation.<locals>.DeprecationSpec3rc   rL   )r^   ra   N)r   r   r   r    r   r!   r"   rL   r   r   r   r   rd      s   zdeprecated warning 2 c             S   s   g | ]}t |qS r   )re   )rf   rg   r   r   r   rh      s    )warningscatch_warningsfilterwarningsUserWarningr    r+   r/   r0   r1   lenr-   r"   r   rL   )r   r_   Zset_foorb   rd   
not_raisedr   )r`   r   test_deprecation   sP    


0


ro   c                s   | }t |\}}}G dd dtj G  fdddtj}| }||j_d|j_d| |jksbtd|jj |jksxtd|j_	d| |jkstd S )	Nc               @   sR   e Zd ZejdgddddZejddddZejd	d
dZ	ejdgddddZ
dS )ztest_namesource.<locals>.spec2dooFz%sr   )name_source
hash_filesargstrrP   Tr)   )existsrs   rP   z%dr   )rs   rP   r$   r   N)r   r   r   r    Filemoorp   r   r!   r$   poor   r   r   r   spec2   s   rx   c                   s   e Zd ZdZ ZdS )z!test_namesource.<locals>.TestName	mycommandN)r   r   r   _cmdrU   r   )rx   r   r   TestName   s   r{   c   z%s_generatedz%d_generatedzmy_%s_template)
r   r    CommandLineInputSpecCommandLiner6   rp   r$   cmdliner-   rv   )r   r   tmpdnmeextr{   testobjr   )rx   r   test_namesource   s    r   c                s   | }t |\}}}G dd dtj G  fdddtj}| }||j_|j}d| |ks^td| |ksntd| |ks~td S )Nc               @   sF   e Zd ZejddddZejdgddddd	Zejd
gddddZdS )z&test_chained_namesource.<locals>.spec2Tz%sr)   )rt   rs   rP   rp   Fr   z	%s_mootpl)rq   rr   rs   rP   name_templaterv   r   )rq   rr   rs   rP   N)r   r   r   r    ru   rp   rv   rw   r   r   r   r   rx      s   rx   c                   s   e Zd ZdZ ZdS )z)test_chained_namesource.<locals>.TestNamery   N)r   r   r   rz   rU   r   )rx   r   r   r{      s   r{   z%sz
%s_mootpl z%s_mootpl_generated)r   r    r}   r~   r6   rp   r   r-   )r   r   r   r   r   r{   r   resr   )rx   r   test_chained_namesource   s    r   c                sx   | }t |\}}}G dd dtj G  fdddtj}| }d}y
|j W n tjk
rh   d}Y nX | sttd S )Nc               @   sJ   e Zd ZejdgdddddZejdgdddd	Zejd
gdddd	ZdS )z%test_cycle_namesource1.<locals>.spec3rp   Fz%sr)   z	%s_mootpl)rq   rr   rs   rP   r   rv   r   )rq   rr   rs   rP   rw   r   N)r   r   r   r    ru   rv   rw   rp   r   r   r   r   rR     s   rR   c                   s   e Zd ZdZ ZdS )z)test_cycle_namesource1.<locals>.TestCyclery   N)r   r   r   rz   rU   r   )rR   r   r   	TestCycle  s   r   TF)r   r    r}   r~   r   NipypeInterfaceErrorr-   )r   r   r   r   r   r   Zto0rn   r   )rR   r   test_cycle_namesource1  s    

r   c       	         s   | }t |\}}}G dd dtj G  fdddtj}| }||j_d}y
|j}W n tjk
rp   d}Y nX t| |st	d| |kst	d| |kst	d	| |kst	d S )
Nc               @   sJ   e Zd ZejdgdddddZejdgdddd	Zejd
gdddd	ZdS )z%test_cycle_namesource2.<locals>.spec3rp   Fz%sr)   z	%s_mootpl)rq   rr   rs   rP   r   rv   r   )rq   rr   rs   rP   rw   r   N)r   r   r   r    ru   rv   rw   rp   r   r   r   r   rR   "  s   rR   c                   s   e Zd ZdZ ZdS )z)test_cycle_namesource2.<locals>.TestCyclery   N)r   r   r   rz   rU   r   )rR   r   r   r   -  s   r   TFz%sz%s_generatedz%s_generated_mootpl)
r   r    r}   r~   r6   rw   r   r   printr-   )	r   r   r   r   r   r   Zto1rn   r   r   )rR   r   test_cycle_namesource2  s     

r   c                s   | }t |\}}}G dd dtj G  fdddtj}| }|jdksNttjj||j	_
|jdksltd|j	_|jdkstd S )	Nc               @   sv   e Zd ZejdddZejddgddZejddgd	d
dgddZ	ejddgdd
ddZ
ejddgdd
dgddZdS )z5test_namesource_constraints.<locals>.constrained_specz%sr)   )rs   rP   z%g	mask_filer   )rs   rM   rP   in_filez%s_maskT	threshold)rs   rq   r   keep_extensionrM   rP   z%s_out1r   )rs   rq   r   r   rP   z%s_out2r   )rs   rq   r   r   rO   rP   N)r   r   r   r    ru   r   r   r#   r   r   Z	out_file1Z	out_file2r   r   r   r   constrained_specF  s,   r   c                   s   e Zd ZdZ ZdS )z4test_namesource_constraints.<locals>.TestConstrainedry   N)r   r   r   rz   rU   r   )r   r   r   TestConstraineda  s   r   ry   z+mycommand foo.txt foo_mask.txt foo_out1.txtg      $@z.mycommand foo.txt 10 foo_out1.txt foo_out2.txt)r   r    r}   r~   r   r-   ospathbasenamer6   r   r   )r   r   r   r   r   r   Ztcr   )r   r   test_namesource_constraintsB  s    r   c             C   sd   | }t jj|\}}t jj|s$tG dd dtj}|||gd}|jdd}|d dks`td S )Nc               @   s,   e Zd ZejddZejjejddZdS )z(test_TraitedSpec_withFile.<locals>.spec2T)rt   N)	r   r   r   r    ru   rv   r   Listrp   r   r   r   r   rx   x  s   rx   )rv   rp   content)hash_methodr)   Z a00e9ee24f5bfa9545a515b7a759886b)r   r   splitrt   r-   r    r+   r,   )r   r   r   r   rx   r2   r3   r   r   r   test_TraitedSpec_withFiles  s    r   c             C   s   | }t jj|\}}t jj|s$tG dd dtj}|||gd}|jdd}|d dks`tG dd	 d	tj}|||gd}|jdd}G d
d dtj}	|	||gd}|jdd}
|d |
d kstd S )Nc               @   s.   e Zd ZejdddZejjejddZdS )z1test_TraitedSpec_withNoFileHashing.<locals>.spec2TF)rt   rr   )rt   N)	r   r   r   r    ru   rv   r   r   rp   r   r   r   r   rx     s   rx   )rv   rp   r   )r   r)   Z 8da4669ff5d72f670a46ea3e7a203215c               @   s.   e Zd ZejdddZejjejddZdS )z1test_TraitedSpec_withNoFileHashing.<locals>.spec3Trp   )rt   rq   )rt   N)	r   r   r   r    ru   rv   r   r   rp   r   r   r   r   rR     s   rR   c               @   s,   e Zd ZejddZejjejddZdS )z1test_TraitedSpec_withNoFileHashing.<locals>.spec4T)rt   N)	r   r   r   r    ru   rv   r   r   rp   r   r   r   r   spec4  s   r   )r   r   r   rt   r-   r    r+   r,   )r   r   r   r   rx   r2   r3   rR   Zhashval1r   Zhashval2r   r   r   "test_TraitedSpec_withNoFileHashing  s    r   c              C   s   t j j} | jdt jddgd | jdt j  tjt | jdt jdgd W d Q R X | jdt jd	gd
d tjt j d| _	W d Q R X d| _	d| _
tjt j d| _W d Q R X d| _d S )NniftiZnifti1Zdicom)typesanytypeZnewtypeZnifti10
nocompressZmghF)r   Zallow_compressedztest.mgzztest.niiztest.xmlztest.mgh)r    rX   r6   rA   Z	ImageFiler/   r0   
ValueErrorr1   r   r   r   )r'   r   r   r   test_ImageFile  s    
 r   c                 s  G dd dt j G  fdddt j} tt jg ks:tt| }|d d dksVt|d d sft|d	 d d
kszt|d	 d  std }|  }|jjtkstt|}|jjdkst|d d dkst|d d st|d	 d d
kst|d	 d  s
td S )Nc               @   sf   e Zd ZejjddZejjdddZejjdddZejjdddZ	ej
dddZej
dddZd	S )
z%test_filecopy_info.<locals>.InputSpecza random int)rN   T)rN   	mandatoryF)rN   r   za file)rN   copyfileN)r   r   r   r    r   r!   r"   r$   rv   r&   ru   zoowoor   r   r   r   	InputSpec  s   r   c                   s   e Zd Z ZdZdd ZdS )z,test_filecopy_info.<locals>.DerivedInterfaceFc             S   s   d| j _dS )zBA mock normalize_filenames for freesurfer interfaces that have oneznormalized_filename.extN)r6   r   )selfr   r   r   normalize_filenames  s    z@test_filecopy_info.<locals>.DerivedInterface.normalize_filenamesN)r   r   r   rU   Zresource_monitorr   r   )r   r   r   DerivedInterface  s   r   r   keyr   copyr)   r   znormalized_filename.ext)r    r+   rX   r   r-   r6   r   r   )r   infoZderivedr   )r   r   test_filecopy_info  s"    r   )%r   ri   r/   Zutils.filemanipr   r]   r   r    r   r   Z
interfacesr   Zutility.wrappersr	   Zpipeliner
   specsr   Zfixturer   r4   r:   markskiprC   rK   rZ   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s2   #<$1