
    ;eN)                         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                     dS dS )	    N)support)	os_helperc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )FileCompareTestCasec                    t           j        | _        t           j        dz   | _        t           j        dz   | _        d}| j        | j        | j        fD ]A}t          |dd          5 }|                    |           d d d            n# 1 swxY w Y   Bt          | j        dd          5 }|                    d           d d d            n# 1 swxY w Y   t          j                    | _	        d S )	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       (/usr/lib/python3.11/test/test_filecmp.pysetUpzFileCompareTestCase.setUp   sW   $	")G3")G3,Y? 	# 	#DdC'222 #fT"""# # # # # # # # # # # # # # # $.$999 	-VLL+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-&((s$   $BB
	B
	)CCCc                     t          j        | j                   t          j        | j                   t          j        | j                   d S N)osunlinkr   r   r   r   s    r   tearDownzFileCompareTestCase.tearDown   s>    
	$)
	$.!!!
	$.!!!!!    c                    |                      t          j        | j        | j                  d           |                      t          j        | j        | j        d          d           |                      t          j        | j        | j                  d           |                      t          j        | j        | j        d          d           d S )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    DIty998	: 	: 	:DIty%HHH8	: 	: 	:DIt~>>@	B 	B 	BDIt~uMMM@	B 	B 	B 	B 	Br!   c                     |                      t          j        | j        | j                  d           |                      t          j        | j        | j                  d           d S )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(   sf    TY??7	9 	9 	9TY999	; 	; 	; 	; 	;r!   c                    t          j        | j        | j        d          }t          j        | j        | j        d          }t          j                     |                     t          t           j                  dk    d           d S )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.   s~    DIt~uMMM TYNNNGN++q0E	G 	G 	G 	G 	Gr!   N)__name__
__module____qualname__r   r    r(   r+   r2    r!   r   r   r      sg        ) ) )" " "
B B B; ; ;G G G G Gr!   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )DirCompareTestCasec                    t          j                    }t          j                            |d          | _        t          j                            |d          | _        t          j                            |d          | _        t          j                            | j        d          | _        t          j        	                    d          t          j        	                    d          k    | _
        d}| j        | j        | j        | j        fD ]}t          j        |d           t          j        |           t          j                            |d	          }t          j        |           | j
        r|| j        u rd
}nd}t          t          j                            ||          dd          5 }|                    |           d d d            n# 1 swxY w Y   t          t          j                            | j        d          dd          5 }|                    d           d d d            d S # 1 swxY w Y   d S )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   sS   $&&7<<..VZ88VZ88 7<<u==!w//448H8H8M8MM,HdmT]D<LM 
	# 
	#CM#t$$$HSMMM',,sH55KH[!!!# t}(<(<bgll3++S7CCC #vT"""# # # # # # # # # # # # # # # "',,t}g66gNNN 	-RXLL+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   2GG	G	H88H<?H<c                 \    | j         | j        | j        fD ]}t          j        |           d S r   )r   rC   rD   rH   rI   )r   r   s     r   r    zDirCompareTestCase.tearDownQ   s;    HdmT]; 	 	CM#	 	r!   c                 F    |                      dt          j                   d S )Nr:   )assertInr&   DEFAULT_IGNORESr   s    r   test_default_ignoresz'DirCompareTestCase.test_default_ignoresU   s    eW455555r!   c                 (   |                      t          j        | j        | j        dg          dgg g fk    d           |                      t          j        | j        | j        dg          dgg g fk    d           |                      t          j        | j        | j        dgd          dgg g fk    d           |                      t          j        | j        | j        dgd          d           t          t          j                            | j        d          dd	          5 }|	                    d
           d d d            n# 1 swxY w Y   | 
                    t          j        | 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 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   (48fXFF 2r*+=	? 	? 	? 	(4=6(KK 2r*+;	= 	= 	=
 	(48fX168 8 8 2r*+ >	? 	? 	? 	(4=6(168 8 8;	= 	= 	=
 "',,tx113III 	2VLL0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	)$(DM&,g%68 8Xy"-. =	> 	> 	> 	> 	>s   &EEEc                 h    	 |                      t          |          t          |                     d S r   )assertEqualsorted)r   actualexpecteds      r   _assert_listsz DirCompareTestCase._assert_listss   s/    >)9)9:::::r!   c                 *   | j         | j        }}t          j        ||          }|                     |j        |           |                     |j        |           | j        r;|                     |j	        ddg           |                     |j
        ddg           n:|                     |j	        ddg           |                     |j
        ddg           |                     |j        ddg           |                     |j        dg           |                     |j        g            |                     |j        g            |                     |j        dg           |                     |j        g            d                    | j         | j                  ddg}|                     |j        |           | j         | j        }}t          j        ||          }|                     |j        |           |                     |j        |           |                     |j	        ddg           |                     |j
        g d           |                     |j        ddg           |                     |j        dg           |                     |j        g            |                     |j        dg           |                     |j        dg           |                     |j        g            d                    | j         | j                  d	                    | j                  ddg}|                     |j        |           | j         | j        }}t+          j        t.          j                            | j        d          t.          j                            | j         d                     t          j        ||          }|                     |j        |           |                     |j        |           |                     |j	        g d           |                     |j
        ddg           |                     |j        ddg           |                     |j        dg           |                     |j        g            |                     |j        dg           |                     |j        g            d                    | j         | j                  d	                    | j                   ddg}|                     |j        |           t5          t.          j                            | j        d          d
d          5 }|                    d           d d d            n# 1 swxY w Y   t          j        | j         | j                  }|                     |j        dg           |                     |j        dg           d                    | j         | j                  dddg}|                     |j        |           d S )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   "h)N8Y//***),,, 	Aq{VX,>???q|fh-?@@@@q{VX,>???q|fh-?@@@18fh%78881=8*555b)))r***x000r***$-88(0

 	AHo666 #h)N8Y//***),,,1;(:;;;1<)D)D)DEEE18fh%78881=8*555b)))y111x000r***$-88$++DM::(0	
 	AHo666 #h)GLL00GLL7++	
 	
 	
 N8Y//***),,,1;(C(C(CDDD1<&();<<<18fh%7888wi000r***x000r***$-88$++DH55(0	
 	AHo666 "',,t}g66gNNN 	2RXLL0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2N48T]33x000y111$-88()0	
 	AHo66666s   U22U69U6c                 4   	  G d dt           j                  } || j        | j                  }|j        }|                     t          |                                          dg           |d         }|                     t          |          |           d S )Nc                       e Zd ZdS )=DirCompareTestCase.test_dircmp_subdirs_type.<locals>.MyDirCmpN)r3   r4   r5   r6   r!   r   MyDirCmprw      s        Dr!   rx   r=   )	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   s    =	 	 	 	 	w~ 	 	 	HTXt}--9hmmoo..
;;;H%h22222r!   c                 t   | j         | j        }}t          j        ||          }t          j                            |d          }t          j                            |d          }d                    | j         | j                  dddd                    ||          g}|                     |j	        |           d S 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    "h)N8Y//gll8X66w||Ix88$-88(0\::
 	A4oFFFFFr!   c                 t   | j         | j        }}t          j        ||          }t          j                            |d          }t          j                            |d          }d                    | j         | j                  dddd                    ||          g}|                     |j	        |           d S 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    "h)N8Y//gll8X66w||Ix88$-88(0\::
 	A1?CCCCCr!   c                    t          j                    5 } |             |                                                                                    d          }|                     ||           d d d            d S # 1 swxY w Y   d S )N
)r   captured_stdoutgetvaluestripsplitrX   )r   dircmp_reportexpected_report_linesstdoutreport_liness        r   rm   z!DirCompareTestCase._assert_report   s    $&& 	B&MOOO!??,,2244::4@@L\+@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   AA;;A?A?N)r3   r4   r5   r   r    rR   rV   r\   rt   r   r   r   rm   r6   r!   r   r8   r8   5   s        - - -6  6 6 6> > >6; ; ;
R7 R7 R7h3 3 3G G GD D DB B B B Br!   r8   __main__)r&   r   rH   r   unittesttestr   test.supportr   TestCaser   r8   r3   mainr6   r!   r   <module>r      s     				          " " " " " "(G (G (G (G (G(+ (G (G (GTAB AB AB AB AB* AB AB ABH zHMOOOOO r!   