a 5êdg¾"ã@srddlZddlZddlZddlZddlZddlmZGdd„dejƒZGdd„dejƒZ dd„Z e d krne ƒdS) éN)Úsupportc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚFileCompareTestCasec Cs²tj|_tjd|_tjd|_d}|j|j|jfD]8}t|dƒ}| |¡Wdƒq41sb0Yq4t|jdƒ}| d¡Wdƒn1sš0Yt ¡|_ dS)Nz-samez-diffúContents of file go here. Úwza+zAn extra line. ) rZTESTFNÚnameÚ name_sameÚ name_diffÚopenÚwriteÚtempfileÚ gettempdirÚdir)ÚselfÚdatarÚoutput©rú-/usr/local/lib/python3.9/test/test_filecmp.pyÚsetUp s   *(zFileCompareTestCase.setUpcCs(t |j¡t |j¡t |j¡dS©N)ÚosÚunlinkrrr©rrrrÚtearDowns  zFileCompareTestCase.tearDowncCsl| t |j|j¡d¡| tj|j|jddd¡| t |j|j¡d¡| tj|j|jddd¡dS)NzComparing file to itself failsF©Úshallowz&Comparing file to identical file fails)Ú assertTrueÚfilecmpÚcmprrrrrrÚ test_matchingsÿÿÿÿz!FileCompareTestCase.test_matchingcCs4| t |j|j¡d¡| t |j|j¡d¡dS)Nz!Mismatched files compare as equalz#File and directory compare as equal)Ú assertFalserrrrr rrrrÚtest_different's ÿÿz"FileCompareTestCase.test_differentcCsJtj|j|jdd}tj|j|jdd}t ¡| ttjƒdkd¡dS)NFrrz+Cache not cleared after calling clear_cache) rrrrrÚ clear_cacherÚlenÚ_cache)rZ first_compareZsecond_comparerrrÚtest_cache_clear-s ÿz$FileCompareTestCase.test_cache_clearN)Ú__name__Ú __module__Ú __qualname__rrrr r$rrrrr s   rc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚDirCompareTestCasec Cs6t ¡}tj |d¡|_tj |d¡|_tj |d¡|_tj |jd¡|_tj  d¡tj  d¡k|_ d}|j|j|j|jfD]r}t   |d¡t  |¡|j r¬||jur¬d }nd }ttj ||¡d ƒ}| |¡Wdƒq|1sä0Yq|ttj |jd ¡d ƒ}| d ¡Wdƒn1s(0YdS)Nr zdir-samezdir-diffú.hgÚAÚarTÚFiLeÚfilerÚfile2zAn extra file. )r r rÚpathÚjoinr Údir_sameÚdir_diffZ dir_ignoredÚnormcaseÚcaseinsensitiveÚshutilÚrmtreeÚmkdirr r )rZtmpdirrr Úfnrrrrr5s"  *zDirCompareTestCase.setUpcCs$|j|j|jfD]}t |¡qdSr)r r1r2r5r6)rr rrrrNszDirCompareTestCase.tearDowncCs| dtj¡dS)Nr))ZassertInrÚDEFAULT_IGNORESrrrrÚtest_default_ignoresRsz'DirCompareTestCase.test_default_ignorescCs | t |j|jdg¡dgggfkd¡| t |j|jdg¡dgggfkd¡| tj|j|jdgdddgggfkd¡| tj|j|jdgddd¡ttj |jd¡dƒ}|  d¡Wdƒn1sÒ0Y|  t |j|jddg¡dgdggfkd ¡dS) Nr-z#Comparing directory to itself failsz!Comparing directory to same failsFrr.rúDifferent contents. z&Comparing mismatched directories fails) rrÚcmpfilesr r1r rr/r0r r)rrrrrÚ test_cmpfilesUs> ÿþ ÿþÿ þýÿþ(ÿ þýz DirCompareTestCase.test_cmpfilescCs@|j|j}}t ||¡}| |j|¡| |j|¡|jrZ| |j|j gdgdgg¡n| |j|j gdgdgg¡| |j dg¡| |j g¡| |j g¡| |j dg¡| |jg¡d |j|j¡dg}| |j|¡|j|j}}t ||¡}| |j|¡| |j|¡| |jdg¡| |j ddg¡| |j dg¡| |j g¡| |j dg¡| |j dg¡| |jg¡d |j|j¡d |j¡dg}| |j|¡|j|j}}t tj |jd¡tj |jd¡¡t ||¡}| |j|¡| |j|¡| |jddg¡| |j dg¡| |j dg¡| |j dg¡| |j g¡| |j dg¡| |jg¡d |j|j¡d |j¡dg}| |j|¡ttj |jd¡dƒ}| d¡Wdƒn1sÞ0Yt |j|j¡}| |j dg¡| |jdg¡d |j|j¡dd g}| |j|¡dS) Nr-r,ú diff {} {}úIdentical files : ['file']r.zOnly in {} : ['file2']rr;zDiffering files : ['file2'])r r1rÚdircmpÚ assertEqualÚleftÚrightr4Ú left_listÚ right_listÚcommonÚ left_onlyÚ right_onlyÚ same_filesÚ diff_filesÚformatÚ_assert_reportÚreportr2r5Úmoverr/r0r r )rÚleft_dirÚ right_dirÚdÚexpected_reportrrrrÚ test_dircmpps| þ  ýþ  ý*ýzDirCompareTestCase.test_dircmpcCs@|j|j}}t ||¡}d |j|j¡dg}| |j|¡dS©Nr>r?)r r1rr@rKrLÚreport_partial_closure©rrOrPrQrRrrrÚtest_report_partial_closure¼s  þz.DirCompareTestCase.test_report_partial_closurecCs@|j|j}}t ||¡}d |j|j¡dg}| |j|¡dSrT)r r1rr@rKrLÚreport_full_closurerVrrrÚtest_report_full_closureÅs  þz+DirCompareTestCase.test_report_full_closurecCsPt ¡4}|ƒ| ¡ ¡ d¡}| ||¡Wdƒn1sB0YdS)NÚ )rZcaptured_stdoutÚgetvalueÚstripÚsplitrA)rZ dircmp_reportZexpected_report_linesÚstdoutZ report_linesrrrrLÎs z!DirCompareTestCase._assert_reportN) r%r&r'rrr:r=rSrWrYrLrrrrr(4sL  r(cCst tt¡dSr)rZ run_unittestrr(rrrrÚ test_mainÕsr_Ú__main__) rrr5r ZunittestÚtestrZTestCaserr(r_r%rrrrÚs *"