
    dafj                     8    d Z ddlZddlZddlmZ  G d d      Zy)z$Tests common to tarfile and zipfile.    N)	os_helperc                   "   e Zd Zd ZddZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                  d        Zej                  d        Zej                  d        Zej                  d        Zej                  d        Zej                  d        Zy)OverwriteTestsc                     t        j                  | j                         | j                  t        j
                  | j                         y N)osmakedirstestdir
addCleanupr   rmtree)selfs    ./root/Python-3.12.4/Lib/test/archiver_tests.pysetUpzOverwriteTests.setUp
   s*    
DLL!	(($,,7    c                 h    t        |d      5 }|j                  |       d d d        y # 1 sw Y   y xY w)Nwb)openwrite)r   pathcontentfs       r   create_filezOverwriteTests.create_file   s/    $ 	GGG	 	 	s   (1c                     t         r   NotImplementedError)r   r   s     r   r   zOverwriteTests.open       !!r   c                     t         r   r   )r   ars     r   
extractallzOverwriteTests.extractall   r   r   c                    t         j                  j                  | j                  d      }| j	                  |d       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             t        |d      5 }| j                  |j                         d       d d d        y # 1 sw Y   mxY w# 1 sw Y   y xY w)Ntest   contentrb
   newcontent)r   r   joinr
   r   r   ar_with_filer   
assertTrueisfileassertEqualreadr   targetr   r   s       r   test_overwrite_file_as_filez*OverwriteTests.test_overwrite_file_as_file   s    dllF3,YYt(() 	 ROOB	 v./&$ 	61QVVX}5	6 	6	  	 	6 	6s   C,!C"C"C+c                 `   t         j                  j                  | j                  d      }t        j                  |       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             y # 1 sw Y   8xY w)Nr!   )
r   r   r%   r
   mkdirr   ar_with_dirr   r'   isdirr   r,   r   s      r   test_overwrite_dir_as_dirz(OverwriteTests.test_overwrite_dir_as_dir"   st    dllF3
YYt''( 	 BOOB	 f-.	  	 s   B$$B-c                    t         j                  j                  | j                  d      }t        j                  |       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  t         j                  j                  |d                   t        t         j                  j                  |d      d      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr!   filer#   r$   )r   r   r%   r
   r/   r   ar_with_implicit_dirr   r'   r1   r(   r)   r*   r+   s       r   "test_overwrite_dir_as_implicit_dirz1OverwriteTests.test_overwrite_dir_as_implicit_dir)   s    dllF3
YYt001 	 ROOB	 f-.rww||FF'CDE"'',,vv.5 	6QVVX}5	6 	6		  	 	6 	6s   E!EEEc                    t         j                  j                  | j                  d      }t        j                  |       | j                  | j                        5 }| j                  t        j                  dk(  rt        nt              5  | j                  |       d d d        d d d        | j                  t         j                  j                  |             y # 1 sw Y   @xY w# 1 sw Y   DxY w)Nr!   win32)r   r   r%   r
   r/   r   r&   assertRaisessysplatformPermissionErrorIsADirectoryErrorr   r'   r1   r2   s      r   test_overwrite_dir_as_filez)OverwriteTests.test_overwrite_dir_as_file3   s    dllF3
YYt(() 	$R""cllg6M?(9; $#$	$ 	f-.$ $	$ 	$s$   /C'
CC'C$	 C''C0c                 0   t         j                  j                  | j                  d      }| j	                  |d       | j                  | j                        5 }| j                  t              5  | j                  |       d d d        d d d        | j                  t         j                  j                  |             t        |d      5 }| j                  |j                         d       d d d        y # 1 sw Y   uxY w# 1 sw Y   yxY w# 1 sw Y   y xY w)Nr!   r"   r#   )r   r   r%   r
   r   r   r0   r:   FileExistsErrorr   r'   r(   r)   r*   r+   s       r   test_overwrite_file_as_dirz)OverwriteTests.test_overwrite_file_as_dir<   s    dllF3,YYt''( 	$B""?3 $#$	$ 	v./&$ 	31QVVXz2	3 	3$ $	$ 	$	3 	3s0   D .C4 D 
!D4C=	9D  D	Dc                 b   t         j                  j                  | j                  d      }| j	                  |d       | j                  | j                        5 }| j                  t        j                  dk(  rt        nt              5  | j                  |       d d d        d d d        | j                  t         j                  j                  |             t        |d      5 }| j                  |j!                         d       d d d        y # 1 sw Y   uxY w# 1 sw Y   yxY w# 1 sw Y   y xY w)Nr!   r"   r9   r#   )r   r   r%   r
   r   r   r6   r:   r;   r<   FileNotFoundErrorNotADirectoryErrorr   r'   r(   r)   r*   r+   s       r   #test_overwrite_file_as_implicit_dirz2OverwriteTests.test_overwrite_file_as_implicit_dirF   s    dllF3,YYt001 	$R""8O#4(:< $#$	$ 	v./&$ 	31QVVXz2	3 	3	$ $	$ 	$
	3 	3s0   /DDD#!D%D	DD"%D.c                    t         j                  j                  | j                  d      }t         j                  j                  | j                  d      }| j	                  |d       t        j
                  d|       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  |             t        |d      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr!   test2r"   r#   r$   )r   r   r%   r
   r   symlinkr   r&   r   r'   islinkr(   r)   r*   r   r,   target2r   r   s        r   #test_overwrite_file_symlink_as_filez2OverwriteTests.test_overwrite_file_symlink_as_fileQ   s     dllF3'',,t||W5*-


7F#YYt(() 	 ROOB	 v./w/0'4  	6AQVVX}5	6 	6		  	 	6 	6s   E!EEEc                    t         j                  j                  | j                  d      }t         j                  j                  | j                  d      }t        j                  d|       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  |             t        |d      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr!   rH   r#   r$   )r   r   r%   r
   rI   r   r&   r   r'   rJ   r(   r)   r*   rK   s        r   *test_overwrite_broken_file_symlink_as_filez9OverwriteTests.test_overwrite_broken_file_symlink_as_file_   s     dllF3'',,t||W5


7F#YYt(() 	 ROOB	 v./w/0'4  	6AQVVX}5	6 	6		  	 	6 	6s   D2!D>2D;>Ec                 @   t         j                  j                  | j                  d      }t         j                  j                  | j                  d      }t        j                  |       t        j
                  d|d       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  |             y # 1 sw Y   fxY wNr!   rH   Ttarget_is_directory)r   r   r%   r
   r/   rI   r   r0   r   r'   rJ   r1   r   r,   rL   r   s       r   !test_overwrite_dir_symlink_as_dirz0OverwriteTests.test_overwrite_dir_symlink_as_dirl   s     dllF3'',,t||W5



7F=YYt''( 	 BOOB	 v./g./	  	 s   DDc                    t         j                  j                  | j                  d      }t         j                  j                  | j                  d      }t        j                  |       t        j
                  d|d       | j                  | j                        5 }| j                  |       d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  |             | j                  t         j                  j                  t         j                  j                  |d                   t        t         j                  j                  |d      d      5 }| j                  |j                         d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr!   rH   TrR   r5   r#   r$   )r   r   r%   r
   r/   rI   r   r6   r   r'   rJ   r1   r(   r)   r*   rK   s        r   *test_overwrite_dir_symlink_as_implicit_dirz9OverwriteTests.test_overwrite_dir_symlink_as_implicit_dirx   s*    dllF3'',,t||W5



7F=YYt001 	 ROOB	 v./g./rww||GV'DEF"'',,w/6 	6!QVVX}5	6 	6	  	 
	6 	6s   F3	!G 3F= G	c                 j   t         j                  j                  | j                  d      }t         j                  j                  | j                  d      }t        j                  d|d       | j                  | j                        5 }| j                  t              5  | j                  |       d d d        d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  |             y # 1 sw Y   nxY w# 1 sw Y   rxY wrQ   )r   r   r%   r
   rI   r   r0   r:   rA   r   r'   rJ   assertFalseexistsrT   s       r   (test_overwrite_broken_dir_symlink_as_dirz7OverwriteTests.test_overwrite_broken_dir_symlink_as_dir   s    dllF3'',,t||W5


7F=YYt''( 	$B""?3 $#$	$ 	v./01$ $	$ 	$$   D)D0D)D&	"D))D2c                 j   t         j                  j                  | j                  d      }t         j                  j                  | j                  d      }t        j                  d|d       | j                  | j                        5 }| j                  t              5  | j                  |       d d d        d d d        | j                  t         j                  j                  |             | j                  t         j                  j                  |             y # 1 sw Y   nxY w# 1 sw Y   rxY wrQ   )r   r   r%   r
   rI   r   r6   r:   rA   r   r'   rJ   rY   rZ   rT   s       r   1test_overwrite_broken_dir_symlink_as_implicit_dirz@OverwriteTests.test_overwrite_broken_dir_symlink_as_implicit_dir   s    dllF3'',,t||W5


7F=YYt001 	$R""?3 $#$	$ 	v./01$ $	$ 	$r\   N)r   )__name__
__module____qualname__r   r   r   r   r-   r3   r7   r?   rB   rF   r   skip_unless_symlinkrM   rO   rU   rW   r[   r^    r   r   r   r      s    8""6/6/3	3 ""6 #6 ""
6 #
6 ""	0 #	0 ""6 #6 ""2 #2 ""2 #2r   r   )__doc__r   r;   test.supportr   r   rc   r   r   <module>rf      s    * 	 
 "S2 S2r   