B
    18™\¾"  ã               @   sr   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 G dd„ dejƒZG dd„ dejƒZ	dd„ Z
ed	krne
ƒ  dS )
é    N)Úsupportc               @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚFileCompareTestCasec          
   C   sŽ   t j| _t jd | _t jd | _d}x8| j| j| jgD ]$}t|dƒ}| |¡ W d Q R X q6W t| jdƒ}| d¡ W d Q R X t ¡ | _	d S )Nz-samez-diffzContents of file go here.
Úwza+zAn extra line.
)
r   ÚTESTFNÚnameÚ	name_sameÚ	name_diffÚopenÚwriteÚtempfileÚ
gettempdirÚdir)ÚselfÚdatar   Úoutput© r   úU/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_filecmp.pyÚsetUp   s    zFileCompareTestCase.setUpc             C   s(   t  | j¡ t  | j¡ t  | j¡ d S )N)ÚosÚunlinkr   r   r   )r   r   r   r   ÚtearDown   s    zFileCompareTestCase.tearDownc             C   sl   |   t | j| j¡d¡ |   tj| j| jddd¡ |   t | j| j¡d¡ |   tj| j| jddd¡ d S )NzComparing file to itself failsF)Úshallowz&Comparing file to identical file fails)Ú
assertTrueÚfilecmpÚcmpr   r   )r   r   r   r   Útest_matching   s    z!FileCompareTestCase.test_matchingc             C   s4   |   t | j| j¡d¡ |   t | j| j¡d¡ d S )Nz!Mismatched files compare as equalz#File and directory compare as equal)ÚassertFalser   r   r   r   r   )r   r   r   r   Útest_different'   s    z"FileCompareTestCase.test_differentc             C   sJ   t j| j| jdd}t j| j| jdd}t  ¡  |  tt jƒdkd¡ d S )NF)r   r   z+Cache not cleared after calling clear_cache)	r   r   r   r   r   Úclear_cacher   ÚlenÚ_cache)r   Zfirst_compareZsecond_comparer   r   r   Útest_cache_clear-   s
    z$FileCompareTestCase.test_cache_clearN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r!   r   r   r   r   r   
   s
   
r   c               @   sL   e Z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 )ÚDirCompareTestCasec          
   C   s  t  ¡ }tj |d¡| _tj |d¡| _tj |d¡| _tj | jd¡| _tj 	d¡tj 	d¡k| _
d}xv| j| j| j| jfD ]^}t |d¡ t |¡ | j
r®|| jkr®d	}nd
}ttj ||¡dƒ}| |¡ W d Q R X q~W ttj | jd¡dƒ}| d¡ W d Q R X d S )Nr   zdir-samezdir-diffz.hgÚAÚazContents of file go here.
TÚFiLeÚfiler   Úfile2zAn extra file.
)r   r   r   ÚpathÚjoinr   Údir_sameÚdir_diffZdir_ignoredÚnormcaseÚcaseinsensitiveÚshutilÚrmtreeÚmkdirr	   r
   )r   Ztmpdirr   r   Úfnr   r   r   r   r   5   s"    
zDirCompareTestCase.setUpc             C   s(   x"| j | j| jfD ]}t |¡ qW d S )N)r   r-   r.   r1   r2   )r   r   r   r   r   r   N   s    zDirCompareTestCase.tearDownc             C   s   |   dtj¡ d S )Nz.hg)ÚassertInr   ZDEFAULT_IGNORES)r   r   r   r   Útest_default_ignoresR   s    z'DirCompareTestCase.test_default_ignoresc          	   C   sø   |   t | j| jdg¡dgg g fkd¡ |   t | j| jdg¡dgg g fkd¡ |   tj| j| jdgdddgg g fkd¡ |   tj| j| jdgddd¡ ttj | jd¡dƒ}| 	d¡ W d Q R X |  
t | j| jddg¡dgdgg fkd	¡ d S )
Nr)   z#Comparing directory to itself failsz!Comparing directory to same failsF)r   r*   r   zDifferent contents.
z&Comparing mismatched directories fails)r   r   Zcmpfilesr   r-   r	   r   r+   r,   r
   r   )r   r   r   r   r   Útest_cmpfilesU   s&    z DirCompareTestCase.test_cmpfilesc          	   C   s*  | j | j }}t ||¡}|  |j|¡ |  |j|¡ | jrZ|  |j|j	gdgdgg¡ n|  |j|j	gdgdgg¡ |  |j
dg¡ |  |jg ¡ |  |jg ¡ |  |jdg¡ |  |jg ¡ d | j | j¡dg}|  |j|¡ | j | j }}t ||¡}|  |j|¡ |  |j|¡ |  |jdg¡ |  |j	ddg¡ |  |j
dg¡ |  |jg ¡ |  |jdg¡ |  |jdg¡ |  |jg ¡ d | j | j¡d | j¡dg}|  |j|¡ | j | j }}t tj | jd¡tj | j d¡¡ t ||¡}|  |j|¡ |  |j|¡ |  |jddg¡ |  |j	dg¡ |  |j
dg¡ |  |jdg¡ |  |jg ¡ |  |jdg¡ |  |jg ¡ d | j | j¡d | j ¡dg}|  |j|¡ ttj | jd¡dƒ}| d¡ W d Q R X t | j | j¡}|  |jdg¡ |  |jdg¡ d | j | j¡dd	g}|  |j|¡ d S )
Nr)   r(   z
diff {} {}zIdentical files : ['file']r*   zOnly in {} : ['file2']r   zDifferent contents.
zDiffering files : ['file2'])r   r-   r   ÚdircmpÚassertEqualÚleftÚrightr0   Z	left_listZ
right_listÚcommonZ	left_onlyZ
right_onlyZ
same_filesZ
diff_filesÚformatÚ_assert_reportZreportr.   r1   Úmover   r+   r,   r	   r
   )r   Úleft_dirÚ	right_dirÚdÚexpected_reportr   r   r   r   Útest_dircmpp   sr    

zDirCompareTestCase.test_dircmpc             C   s@   | j | j }}t ||¡}d | j | j¡dg}|  |j|¡ d S )Nz
diff {} {}zIdentical files : ['file'])r   r-   r   r8   r=   r>   Zreport_partial_closure)r   r@   rA   rB   rC   r   r   r   Útest_report_partial_closure¼   s
    z.DirCompareTestCase.test_report_partial_closurec             C   s@   | j | j }}t ||¡}d | j | j¡dg}|  |j|¡ d S )Nz
diff {} {}zIdentical files : ['file'])r   r-   r   r8   r=   r>   Zreport_full_closure)r   r@   rA   rB   rC   r   r   r   Útest_report_full_closureÅ   s
    z+DirCompareTestCase.test_report_full_closurec          	   C   s<   t  ¡ *}|ƒ  | ¡  ¡  d¡}|  ||¡ W d Q R X d S )NÚ
)r   Úcaptured_stdoutÚgetvalueÚstripÚsplitr9   )r   Zdircmp_reportZexpected_report_linesÚstdoutZreport_linesr   r   r   r>   Î   s    
z!DirCompareTestCase._assert_reportN)r"   r#   r$   r   r   r6   r7   rD   rE   rF   r>   r   r   r   r   r%   4   s   L		r%   c               C   s   t  tt¡ d S )N)r   Úrun_unittestr   r%   r   r   r   r   Ú	test_mainÕ   s    rN   Ú__main__)r   r   r1   r   ÚunittestÚtestr   ÚTestCaser   r%   rN   r"   r   r   r   r   Ú<module>   s   * "