
    dafN)                         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 d dlmZ  G d dej                        Z
 G d dej                        Zedk(  r ej                          yy)	    N)support)	os_helperc                   *    e Zd Zd Zd Zd Zd Zd Zy)FileCompareTestCasec                    t         j                  | _        t         j                  dz   | _        t         j                  dz   | _        d}| j                  | j                  | j                  fD ]*  }t        |dd      5 }|j                  |       d d d        , t        | j                  dd      5 }|j                  d       d d d        t        j                         | _	        y # 1 sw Y   xY w# 1 sw Y   /xY w)	Nz-samez-diffContents of file go here.
wutf-8encodingza+zAn extra line.
)
r   TESTFNname	name_same	name_diffopenwritetempfile
gettempdirdir)selfdatar   outputs       ,/root/Python-3.12.4/Lib/test/test_filecmp.pysetUpzFileCompareTestCase.setUp   s    $$	"))G3"))G3,YY? 	#DdC'2 #fT"# #	# $..$9 	-VLL+,	-&&(# #	- 	-s   <C$0C0$C-	0C9c                     t        j                  | j                         t        j                  | j                         t        j                  | j                         y N)osunlinkr   r   r   r   s    r   tearDownzFileCompareTestCase.tearDown   s2    
		$))
		$..!
		$..!    c                    | j                  t        j                  | j                  | j                        d       | j                  t        j                  | j                  | j                  d      d       | j                  t        j                  | j                  | j                        d       | j                  t        j                  | j                  | j                  d      d       y )NzComparing file to itself failsFshallowz&Comparing file to identical file fails)
assertTruefilecmpcmpr   r   r   s    r   test_matchingz!FileCompareTestCase.test_matching   s    DIItyy98	:DIItyy%H8	:DIIt~~>@	BDIIt~~uM@	Br!   c                     | j                  t        j                  | j                  | j                        d       | j                  t        j                  | j                  | j
                        d       y )Nz!Mismatched files compare as equalz#File and directory compare as equal)assertFalser&   r'   r   r   r   r   s    r   test_differentz"FileCompareTestCase.test_different(   sN    TYY?7	9TYY99	;r!   c                 4   t        j                  | j                  | j                  d      }t        j                  | j                  | j                  d      }t        j
                          | j                  t        t         j                        dk(  d       y )NFr#   r   z+Cache not cleared after calling clear_cache)	r&   r'   r   r   r   clear_cacher%   len_cache)r   first_comparesecond_compares      r   test_cache_clearz$FileCompareTestCase.test_cache_clear.   sb    DIIt~~uM TYYNGNN+q0E	Gr!   N)__name__
__module____qualname__r   r    r(   r+   r2    r!   r   r   r      s    )"
B;Gr!   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)DirCompareTestCasec                    t        j                         }t        j                  j	                  |d      | _        t        j                  j	                  |d      | _        t        j                  j	                  |d      | _        t        j                  j	                  | j                  d      | _        t        j                  j                  d      t        j                  j                  d      k(  | _
        d}| j
                  | j                  | j                  | j                  fD ]  }t        j                  |d       t        j                  |       t        j                  j	                  |d	      }t        j                  |       | j                  r|| j                  u rd
}nd}t        t        j                  j	                  ||      dd      5 }|j                  |       d d d         t        t        j                  j	                  | j                  d      dd      5 }|j                  d       d d d        y # 1 sw Y   %xY w# 1 sw Y   y xY w)Nr   zdir-samezdir-diff.hgAar   TsubdirFiLefiler	   r
   r   file2zAn extra file.
)r   r   r   pathjoinr   dir_samedir_diffdir_ignorednormcasecaseinsensitiveshutilrmtreemkdirr   r   )r   tmpdirr   r   subdir_pathfnr   s          r   r   zDirCompareTestCase.setUp6   s   $$&77<<.VZ8VZ8 77<<u=!ww//48H8H8MM,HHdmmT]]D<L<LM 
	#CMM#t$HHSM'',,sH5KHH[!##t}}(<bggll3+S7C #vT"# #
	# "'',,t}}g6gN 	-RXLL+,	- 	-# #	- 	-s   I'II	Ic                 ~    | j                   | j                  | j                  fD ]  }t        j                  |        y r   )r   rC   rD   rH   rI   )r   r   s     r   r    zDirCompareTestCase.tearDownQ   s0    HHdmmT]]; 	CMM#	r!   c                 D    | j                  dt        j                         y )Nr:   )assertInr&   DEFAULT_IGNORESr   s    r   test_default_ignoresz'DirCompareTestCase.test_default_ignoresU   s    eW445r!   c                 X   | j                  t        j                  | j                  | j                  dg      dgg g fk(  d       | j                  t        j                  | j                  | j                  dg      dgg g fk(  d       | j                  t        j                  | j                  | j                  dgd      dgg g fk(  d       | j                  t        j                  | j                  | j                  dgd      d       t        t        j                  j                  | j                  d      dd	      5 }|j                  d
       d d d        | j                  t        j                  | j                  | j                  ddg      dgdgg fk(  d       y # 1 sw Y   OxY w)Nr?   z#Comparing directory to itself failsz!Comparing directory to same failsFr#   r@   r	   r
   r   Different contents.
z&Comparing mismatched directories fails)r%   r&   cmpfilesr   rC   r   r   rA   rB   r   r*   )r   r   s     r   test_cmpfilesz DirCompareTestCase.test_cmpfilesX   s}   ((488fXF 2r*+=	? 	((4==6(K 2r*+;	=
 	((488fX168 2r*+ >	? 	((4==6(168;	=
 "'',,txx13I 	2VLL01	2 	))$((DMM&,g%68Xy"-. =	>	2 	2s    F  F)c                 L    | j                  t        |      t        |             y)z0Assert that two lists are equal, up to ordering.N)assertEqualsorted)r   actualexpecteds      r   _assert_listsz DirCompareTestCase._assert_listss   s    )9:r!   c                    | j                   | j                  }}t        j                  ||      }| j	                  |j
                  |       | j	                  |j                  |       | j                  r=| j                  |j                  ddg       | j                  |j                  ddg       n<| j                  |j                  ddg       | j                  |j                  ddg       | j                  |j                  ddg       | j                  |j                  dg       | j	                  |j                  g        | j	                  |j                  g        | j	                  |j                  dg       | j	                  |j                   g        dj#                  | j                   | j                        ddg}| j%                  |j&                  |       | j                   | j(                  }}t        j                  ||      }| j	                  |j
                  |       | j	                  |j                  |       | j                  |j                  ddg       | j                  |j                  g d       | j                  |j                  ddg       | j                  |j                  dg       | j	                  |j                  g        | j	                  |j                  dg       | j	                  |j                  dg       | j	                  |j                   g        dj#                  | j                   | j(                        d	j#                  | j(                        ddg}| j%                  |j&                  |       | j                   | j(                  }}t+        j,                  t.        j0                  j3                  | j(                  d      t.        j0                  j3                  | j                   d             t        j                  ||      }| j	                  |j
                  |       | j	                  |j                  |       | j                  |j                  g d       | j                  |j                  ddg       | j                  |j                  ddg       | j	                  |j                  dg       | j	                  |j                  g        | j	                  |j                  dg       | j	                  |j                   g        dj#                  | j                   | j(                        d	j#                  | j                         ddg}| j%                  |j&                  |       t5        t.        j0                  j3                  | j(                  d      d
d      5 }|j7                  d       d d d        t        j                  | j                   | j(                        }| j	                  |j                  dg       | j	                  |j                   dg       dj#                  | j                   | j(                        dddg}| j%                  |j&                  |       y # 1 sw Y   xY w)Nr?   r=   r>   
diff {} {}Identical files : ['file']"Common subdirectories : ['subdir'])r?   r@   r=   r@   zOnly in {} : ['file2']r	   r
   r   rT   zDiffering files : ['file2'])r   rC   r&   dircmprX   leftrightrG   r\   	left_list
right_listcommoncommon_dirs	left_only
right_only
same_files
diff_filesformat_assert_reportreportrD   rH   mover   rA   rB   r   r   )r   left_dir	right_dirdexpected_reportr   s         r   test_dircmpzDirCompareTestCase.test_dircmpx   s   "hh)NN8Y/*),q{{VX,>?q||fh-?@q{{VX,>?q||fh-?@188fh%781==8*5b)r*x0r*$--8(0

 	AHHo6 #hh)NN8Y/*),1;;(:;1<<)DE188fh%781==8*5b)y1x0r*$--8$++DMM:(0	
 	AHHo6 #hh)GGLL0GGLL7+	
 NN8Y/*),1;;(CD1<<&();<188fh%78wi0r*x0r*$--8$++DHH5(0	
 	AHHo6 "'',,t}}g6gN 	2RXLL01	2NN488T]]3x0y1$--8()0	
 	AHHo6	2 	2s   8Y==Zc                     G d dt         j                        } || j                  | j                        }|j                  }| j                  t        |j                               dg       |d   }| j                  t        |      |       y)z/Check that dircmp.subdirs respects subclassing.c                       e Zd Zy)=DirCompareTestCase.test_dircmp_subdirs_type.<locals>.MyDirCmpN)r3   r4   r5   r6   r!   r   MyDirCmprw      s    r!   rx   r=   N)	r&   ra   r   rD   subdirsrX   listkeystype)r   rx   rr   sub_dirssub_dcmps        r   test_dircmp_subdirs_typez+DirCompareTestCase.test_dircmp_subdirs_type   sj    	w~~ 	TXXt}}-99hmmo.
;H%h2r!   c                    | j                   | j                  }}t        j                  ||      }t        j
                  j                  |d      }t        j
                  j                  |d      }dj                  | j                   | j                        ddddj                  ||      g}| j                  |j                  |       y Nr=   r^   r_   r`    )
r   rC   r&   ra   r   rA   rB   rl   rm   report_partial_closurer   rp   rq   rr   left_subdirright_subdirrs   s          r   test_report_partial_closurez.DirCompareTestCase.test_report_partial_closure   s    "hh)NN8Y/ggll8X6ww||Ix8$--8(0\:
 	A44oFr!   c                    | j                   | j                  }}t        j                  ||      }t        j
                  j                  |d      }t        j
                  j                  |d      }dj                  | j                   | j                        ddddj                  ||      g}| j                  |j                  |       y r   )
r   rC   r&   ra   r   rA   rB   rl   rm   report_full_closurer   s          r   test_report_full_closurez+DirCompareTestCase.test_report_full_closure   s    "hh)NN8Y/ggll8X6ww||Ix8$--8(0\:
 	A11?Cr!   c                     t        j                         5 } |        |j                         j                         j	                  d      }| j                  ||       d d d        y # 1 sw Y   y xY w)N
)r   captured_stdoutgetvaluestripsplitrX   )r   dircmp_reportexpected_report_linesstdoutreport_liness        r   rm   z!DirCompareTestCase._assert_report   s_    $$& 	B&O!??,224::4@L\+@A	B 	B 	Bs   AA%%A.N)r3   r4   r5   r   r    rR   rV   r\   rt   r   r   r   rm   r6   r!   r   r8   r8   5   s9    -66>6;
R7h3GDBr!   r8   __main__)r&   r   rH   r   unittesttestr   test.supportr   TestCaser   r8   r3   mainr6   r!   r   <module>r      s`     	     "(G(++ (GTAB** ABH zHMMO r!   