a zen"@slddlZddlZddlZddlZddlZddlmZGdddejZGdddejZ e dkrhe dS)N)supportc@s4eZdZddZddZddZddZd d Zd S) FileCompareTestCasec Cstj|_tjd|_tjd|_d}|j|j|jfD]8}t|d}||Wdq41sb0Yq4t|jd}|dWdn1s0Yt|_ dS)Nz-samez-diffContents of file go here. wza+zAn extra line. ) rZTESTFNname name_same name_diffopenwritetempfile gettempdirdir)selfdataroutputrE/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_filecmp.pysetUp s   *(zFileCompareTestCase.setUpcCs(t|jt|jt|jdSN)osunlinkrrrrrrrtearDowns  zFileCompareTestCase.tearDowncCsl|t|j|jd|tj|j|jddd|t|j|jd|tj|j|jddddS)NzComparing file to itself failsFshallowz&Comparing file to identical file fails) assertTruefilecmpcmprrrrrr test_matchingsz!FileCompareTestCase.test_matchingcCs4|t|j|jd|t|j|jddS)Nz!Mismatched files compare as equalz#File and directory compare as equal) assertFalserrrrr rrrrtest_different's z"FileCompareTestCase.test_differentcCsJtj|j|jdd}tj|j|jdd}t|ttjdkddS)NFrrz+Cache not cleared after calling clear_cache) rrrrr clear_cacherlen_cache)rZ first_compareZsecond_comparerrrtest_cache_clear-s z$FileCompareTestCase.test_cache_clearN)__name__ __module__ __qualname__rrrr r$rrrrr s   rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)DirCompareTestCasec Cs6t}tj|d|_tj|d|_tj|d|_tj|jd|_tj dtj dk|_ d}|j|j|j|jfD]r}t |dt ||j r||jurd }nd }ttj||d }||Wdq|1s0Yq|ttj|jd d }|d Wdn1s(0YdS)Nr zdir-samezdir-diff.hgAarTFiLefilerfile2zAn extra file. )r r rpathjoinr dir_samedir_diffZ dir_ignorednormcasecaseinsensitiveshutilrmtreemkdirr r )rZtmpdirrr fnrrrrr5s"  *zDirCompareTestCase.setUpcCs$|j|j|jfD]}t|qdSr)r r1r2r5r6)rr rrrrNszDirCompareTestCase.tearDowncCs|dtjdS)Nr))ZassertInrDEFAULT_IGNORESrrrrtest_default_ignoresRsz'DirCompareTestCase.test_default_ignorescCs |t|j|jdgdgggfkd|t|j|jdgdgggfkd|tj|j|jdgdddgggfkd|tj|j|jdgdddttj|jdd}| dWdn1s0Y| t|j|jddgdgdggfkd dS) Nr-z#Comparing directory to itself failsz!Comparing directory to same failsFrr.rDifferent contents. z&Comparing mismatched directories fails) rrcmpfilesr r1r rr/r0r r)rrrrr test_cmpfilesUs>   ( z DirCompareTestCase.test_cmpfilescCs@|j|j}}t||}||j|||j||jrZ||j|j gdgdggn||j|j gdgdgg||j dg||j g||j g||j dg||jgd|j|jdg}||j||j|j}}t||}||j|||j|||jdg||j ddg||j dg||j g||j dg||j dg||jgd|j|jd|jdg}||j||j|j}}ttj|jdtj|jdt||}||j|||j|||jddg||j dg||j dg||j dg||j g||j dg||jgd|j|jd|jdg}||j|ttj|jdd}|dWdn1s0Yt|j|j}||j dg||jdgd|j|jdd g}||j|dS) Nr-r, diff {} {}Identical files : ['file']r.zOnly in {} : ['file2']rr;zDiffering files : ['file2'])r r1rdircmp assertEqualleftrightr4 left_list right_listcommon left_only right_only same_files diff_filesformat_assert_reportreportr2r5moverr/r0r r )rleft_dir right_dirdexpected_reportrrrr test_dircmpps|     *zDirCompareTestCase.test_dircmpcCs@|j|j}}t||}d|j|jdg}||j|dSNr>r?)r r1rr@rKrLreport_partial_closurerrOrPrQrRrrrtest_report_partial_closures  z.DirCompareTestCase.test_report_partial_closurecCs@|j|j}}t||}d|j|jdg}||j|dSrT)r r1rr@rKrLreport_full_closurerVrrrtest_report_full_closures  z+DirCompareTestCase.test_report_full_closurecCsPt4}||d}|||Wdn1sB0YdS)N )rZcaptured_stdoutgetvaluestripsplitrA)rZ dircmp_reportZexpected_report_linesstdoutZ report_linesrrrrLs z!DirCompareTestCase._assert_reportN) r%r&r'rrr:r=rSrWrYrLrrrrr(4sL  r(__main__) rrr5r ZunittesttestrZTestCaserr(r%mainrrrrs *"