
    /hh;                     D    S r SSKrSSKrSSKJr  SSKJr   " S S5      rg)z$Tests common to tarfile and zipfile.    N)	swap_attr)	os_helperc                   8   \ rS rSrS rSS jrS rS rS rS r	S r
S	 rS
 rS r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       r\R                  S 5       rS rS rSrg)OverwriteTests	   c                     [         R                  " U R                  5        U R                  [        R
                  U R                  5        g N)osmakedirstestdir
addCleanupr   rmtree)selfs    </opt/python-3.13.8/usr/lib/python3.13/test/archiver_tests.pysetUpOverwriteTests.setUp   s*    
DLL!	(($,,7    c                 r    [        US5       nUR                  U5        S S S 5        g ! , (       d  f       g = f)Nwb)openwrite)r   pathcontentfs       r   create_fileOverwriteTests.create_file   s&    $GGG s   (
6c                     [         er	   NotImplementedError)r   r   s     r   r   OverwriteTests.open       !!r   c                     [         er	   r   )r   ars     r   
extractallOverwriteTests.extractall   r!   r   c                    [         R                  R                  U R                  S5      nU R	                  US5        U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        [        US5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       Nr= f! , (       d  f       g = f)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_file*OverwriteTests.test_overwrite_file_as_file   s    dllF3,YYt(()ROOB *v./&$1QVVX}5   *)  s   C,!C'
C$'
C5c                 l   [         R                  R                  U R                  S5      n[         R                  " U5        U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        g ! , (       d  f       N== f)Nr'   )
r
   r   r+   r   mkdirr   ar_with_dirr$   r-   isdirr   r2   r#   s      r   test_overwrite_dir_as_dir(OverwriteTests.test_overwrite_dir_as_dir#   sm    dllF3
YYt''(BOOB )f-. )(s   B%%
B3c                    [         R                  R                  U R                  S5      n[         R                  " U5        U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  [         R                  R                  US5      5      5        [        [         R                  R                  US5      S5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr'   filer)   r*   )r
   r   r+   r   r6   r   ar_with_implicit_dirr$   r-   r8   r.   r/   r0   r1   s       r   "test_overwrite_dir_as_implicit_dir1OverwriteTests.test_overwrite_dir_as_implicit_dir*   s    dllF3
YYt001ROOB 2f-.rww||FF'CDE"'',,vv.5QVVX}5 65	 21 65s   E!E
E
E#c                    [         R                  R                  U R                  S5      n[         R                  " U5        U R                  U R                  5       nU R                  [        R                  S:X  a  [        O[        5         U R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        g ! , (       d  f       NE= f! , (       d  f       NN= f)Nr'   win32)r
   r   r+   r   r6   r   r,   assertRaisessysplatformPermissionErrorIsADirectoryErrorr$   r-   r8   r9   s      r   test_overwrite_dir_as_file)OverwriteTests.test_overwrite_dir_as_file4   s    dllF3
YYt(()R""cllg6M?(9;#; * 	f-.; ; *)s$   0C.CC.
C+	'C..
C<c                 N   [         R                  R                  U R                  S5      nU R	                  US5        U R                  U R                  5       nU R                  [        5         U R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        [        US5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       Nz= f! , (       d  f       N= f! , (       d  f       g = f)Nr'   r(   r)   )r
   r   r+   r   r   r   r7   rC   FileExistsErrorr$   r-   r.   r/   r0   r1   s       r   test_overwrite_file_as_dir)OverwriteTests.test_overwrite_file_as_dir=   s    dllF3,YYt''(B""?3# 4 ) 	v./&$1QVVXz2   43 )(  s0   D.C4 D
!D4
D	>D
D
D$c                    [         R                  R                  U R                  S5      nU R	                  US5        U R                  U R                  5       nU R                  [        R                  S:X  a  [        O[        5         U R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        [        US5       nU R                  UR!                  5       S5        S S S 5        g ! , (       d  f       Nz= f! , (       d  f       N= f! , (       d  f       g = f)Nr'   r(   rB   r)   )r
   r   r+   r   r   r   r>   rC   rD   rE   FileNotFoundErrorNotADirectoryErrorr$   r-   r.   r/   r0   r1   s       r   #test_overwrite_file_as_implicit_dir2OverwriteTests.test_overwrite_file_as_implicit_dirG   s    dllF3,YYt001R""8O#4(:<#< 2 	v./&$1QVVXz2  	< < 21
  s0   0DDD$!D0
D	D
D-0
D>c                    [         R                  R                  U R                  S5      n[         R                  R                  U R                  S5      nU R	                  US5        [         R
                  " SU5        U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U5      5        [        US5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr'   test2r(   r)   r*   )r
   r   r+   r   r   symlinkr   r,   r$   r-   islinkr.   r/   r0   r   r2   target2r#   r   s        r   #test_overwrite_file_symlink_as_file2OverwriteTests.test_overwrite_file_symlink_as_fileR   s     dllF3'',,t||W5*-


7F#YYt(()ROOB *v./w/0'4 AQVVX}5 ! 	 *) ! s   E!E
E
E$c                    [         R                  R                  U R                  S5      n[         R                  R                  U R                  S5      n[         R                  " SU5        U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U5      5        [        US5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr'   rT   r)   r*   )r
   r   r+   r   rU   r   r,   r$   r-   rV   r.   r/   r0   rW   s        r   *test_overwrite_broken_file_symlink_as_file9OverwriteTests.test_overwrite_broken_file_symlink_as_file`   s     dllF3'',,t||W5


7F#YYt(()ROOB *v./w/0'4 AQVVX}5 ! 	 *) ! s   D3	!E3
E
Ec                 H   [         R                  R                  U R                  S5      n[         R                  R                  U R                  S5      n[         R                  " U5        [         R
                  " SUSS9  U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U5      5        g ! , (       d  f       Nk= fNr'   rT   Ttarget_is_directory)r
   r   r+   r   r6   rU   r   r7   r$   r-   rV   r8   r   r2   rX   r#   s       r   !test_overwrite_dir_symlink_as_dir0OverwriteTests.test_overwrite_dir_symlink_as_dirm   s     dllF3'',,t||W5



7F=YYt''(BOOB )v./g./ )(s   D
D!c                    [         R                  R                  U R                  S5      n[         R                  R                  U R                  S5      n[         R                  " U5        [         R
                  " SUSS9  U R                  U R                  5       nU R                  U5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  [         R                  R                  US5      5      5        [        [         R                  R                  US5      S5       nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       g = f)Nr'   rT   Tr`   r=   r)   r*   )r
   r   r+   r   r6   rU   r   r>   r$   r-   rV   r8   r.   r/   r0   rW   s        r   *test_overwrite_dir_symlink_as_implicit_dir9OverwriteTests.test_overwrite_dir_symlink_as_implicit_diry   s    dllF3'',,t||W5



7F=YYt001ROOB 2v./g./rww||GV'DEF"'',,w/6!QVVX}5 76 21
 76s   F2!G2
G
Gc                 z   [         R                  R                  U R                  S5      n[         R                  R                  U R                  S5      n[         R                  " SUSS9  U R                  U R                  5       nU R                  [        5         U R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U5      5        g ! , (       d  f       Ns= f! , (       d  f       N|= fr_   )r
   r   r+   r   rU   r   r7   rC   rK   r$   r-   rV   assertFalseexistsrb   s       r   (test_overwrite_broken_dir_symlink_as_dir7OverwriteTests.test_overwrite_broken_dir_symlink_as_dir   s    dllF3'',,t||W5


7F=YYt''(B""?3# 4 ) 	v./01 43 )($   D,D.D,
D)	%D,,
D:c                 z   [         R                  R                  U R                  S5      n[         R                  R                  U R                  S5      n[         R                  " SUSS9  U R                  U R                  5       nU R                  [        5         U R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U5      5        g ! , (       d  f       Ns= f! , (       d  f       N|= fr_   )r
   r   r+   r   rU   r   r>   rC   rK   r$   r-   rV   ri   rj   rb   s       r   1test_overwrite_broken_dir_symlink_as_implicit_dir@OverwriteTests.test_overwrite_broken_dir_symlink_as_implicit_dir   s    dllF3'',,t||W5


7F=YYt001R""?3# 4 2 	v./01 43 21rm   c                   ^ [         R                  R                  U R                  S5      nU4S jn[	        [         SU5       mU R                  U R                  5       nU R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        g ! , (       d  f       NE= f! , (       d  f       NN= f)Nr'   c                  &   > T" U 0 UD6  T" U 0 UD6  g r	    argskwargs
orig_mkdirs     r   concurrent_mkdirDOverwriteTests.test_concurrent_extract_dir.<locals>.concurrent_mkdir       ''''r   r6   )
r
   r   r+   r   r   r   r7   r$   r-   r8   r   r2   rx   r#   rw   s       @r   test_concurrent_extract_dir*OverwriteTests.test_concurrent_extract_dir   s    dllF3	( r7$454++,# - 6 	f-. -, 65s$   CB01C0
B>	:C
Cc                 <  ^ [         R                  R                  U R                  S5      nU4S jn[	        [         SU5       mU R                  U R                  5       nU R                  U5        S S S 5        S S S 5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  [         R                  R                  US5      5      5        g ! , (       d  f       N= f! , (       d  f       N= f)Nr'   c                  &   > T" U 0 UD6  T" U 0 UD6  g r	   rs   rt   s     r   rx   MOverwriteTests.test_concurrent_extract_implicit_dir.<locals>.concurrent_mkdir   rz   r   r6   r=   )r
   r   r+   r   r   r   r>   r$   r-   r8   r.   r{   s       @r   $test_concurrent_extract_implicit_dir3OverwriteTests.test_concurrent_extract_implicit_dir   s    dllF3	( r7$454445# 6 6 	f-.rww||FF'CDE 65 65s$   DC<1D<
D
	D
Drs   N)r   )__name__
__module____qualname____firstlineno__r   r   r   r$   r3   r:   r?   rH   rL   rQ   r   skip_unless_symlinkrY   r\   rc   rf   rk   ro   r|   r   __static_attributes__rs   r   r   r   r   	   s    8""6/6/3	3 ""6 #6 ""
6 #
6 ""	0 #	0 ""6 #6 ""2 #2 ""2 #2/	Fr   r   )__doc__r
   rD   test.supportr   r   r   rs   r   r   <module>r      s"    * 	 
 " "hF hFr   