
    e7                        d 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Zddlm	Z	 ddl
mZmZmZmZmZ ddlmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ 	 ddlZddlZdZn# e$ r dZY nw xY w	 ddlZdZ n# e$ r  ed          Z Y nw xY w	 ddl!Z!dZ"n# e$ r dZ"Y nw xY w	 ddl#Z#n# e$ r dZ#Y nw xY w	 ddl$Z$n# e$ r dZ$Y nw xY wd Z% G d dej&        ej'        ej(                  Z)e*dk    r ej+                     dS dS )z!Tests for distutils.archive_util.    N)
splitdrive)archive_util)check_archive_formatsmake_tarballmake_zipfilemake_archiveARCHIVE_FORMATS)find_executablespawn)support)patch)
change_cwd)check_warningsTFzipc                     t           j        j        rdS 	 |                     t	          j                               n# t          $ r Y dS w xY wdS )zF
    Return True if the filename can be saved in the file system.
    TF)ospathsupports_unicode_filenamesencodesysgetfilesystemencodingUnicodeEncodeError)filenames    3  /home/conda/feedstock_root/build_artifacts/python-split_1708115622739/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.11/distutils/tests/test_archive_util.pycan_fs_encoder   1   s`     
w) t1334444   uu4s   &< 
A
	A
c                      e Zd Z ej        ed          d+d            Z ej        ed          d             Z ej        ed          d             Z	 ej        e
d          d             Z ej         ed	          d
          d             Z ej         ed          d
          d             Zd Zd Zg dZd eD             Zd Z ej         ed          o ed          oed          d             Z ej         ed          d          d             Z ej        eoed          d             Z ej        ed          d             Zd Zd Zd  Zd! Z ej        ed          d"             Z ej        ed          d#             Z ej        e
d$          d%             Z d& Z! ej        ed'           ej        e"d(          d)                         Z#d*S ),ArchiveUtilTestCasezNeed zlib support to runarchivec                     |                                  }|                     ||d           |                     ||dd            d S )N.tar.gz.tarcompress_create_files_make_tarball)selfnametmpdirs      r   test_make_tarballz%ArchiveUtilTestCase.test_make_tarballB   sP     ##%%6433364$?????    c                 `    |                                  }|                     |ddd           d S )Nr   r    gzipr"   r$   r'   r)   s     r   test_make_tarball_gzipz*ArchiveUtilTestCase.test_make_tarball_gzipJ   s6    ##%%69i&IIIIIr+   zNeed bz2 support to runc                 `    |                                  }|                     |ddd           d S )Nr   z.tar.bz2bzip2r"   r$   r.   s     r   test_make_tarball_bzip2z+ArchiveUtilTestCase.test_make_tarball_bzip2O   s6    ##%%69j7KKKKKr+   zNeed lzma support to runc                 `    |                                  }|                     |ddd           d S )Nr   z.tar.xzxzr"   r$   r.   s     r   test_make_tarball_xzz(ArchiveUtilTestCase.test_make_tarball_xzT   s6    ##%%69i$GGGGGr+      årchivz'File system cannot handle this filenamec                 0    |                      d           dS )zV
        Mirror test_make_tarball, except filename contains latin characters.
        r6   Nr*   r'   s    r   test_make_tarball_latin1z,ArchiveUtilTestCase.test_make_tarball_latin1Y   s     	y)))))r+      のアーカイブc                 0    |                      d           dS )z{
        Mirror test_make_tarball, except filename contains extended
        characters outside the latin charset.
        r;   Nr8   r9   s    r   test_make_tarball_extendedz.ArchiveUtilTestCase.test_make_tarball_extendeda   s     	344444r+   c                 F   |                                  }t          j        t          |          d         t          |          d         k    d           t          j                            ||          }t          |          5  t          t          |          d         dfi | d d d            n# 1 swxY w Y   ||z   }| 	                    t          j        
                    |                     |                     |                     |          | j                   d S )Nr   z)source and target should be on same drive   dist)mkdtempunittest
skipUnlessr   r   r   joinr   r   
assertTrueexistsassertEqual_tarinfo_created_files)r'   r)   target_namesuffixkwargstmpdir2	base_nametarballs           r   r&   z!ArchiveUtilTestCase._make_tarballj   sT   ,,..Jv..q1Z5H5H5KKG	I 	I 	I GLL+66	  	E 	EI..q16DDVDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E f$w//000w//1DEEEEEs   "B11B58B5c                     t          j        |          }	 |                                }|                                 ||                                 S # |                                 w xY wN)tarfileopengetnamessortclose)r'   r   tarnamess       r   rH   zArchiveUtilTestCase._tarinfoz   sT    l4  	LLNNEJJLLLIIKKKKCIIKKKKs   )A A*)zdist/z
dist/file1z
dist/file2z	dist/sub/zdist/sub/file3z
dist/sub2/c                 8    g | ]}|                     d           S )/)rstrip).0ps     r   
<listcomp>zArchiveUtilTestCase.<listcomp>   s"    @@@ahhsmm@@@r+   c                    |                                  }t          j                            |d          }t          j        |           |                     |dgd           |                     |dgd           t          j        t          j                            |d                     |                     |ddgd           t          j        t          j                            |d                     |S )Nr@   file1xxxfile2subfile3sub2)rA   r   r   rD   mkdir
write_file)r'   r)   r@   s      r   r%   z!ArchiveUtilTestCase._create_files   s    w||FF++
w///w///
dE**+++ug.666
dF++,,,r+   rW   r-   z*Need the tar, gzip and zlib command to runc                 "   |                                  }|                                 }t          j                            |d          }t          j                    }t          j        |           	 t          |d           t          j        |           n# t          j        |           w xY w|dz   }|                     t          j        	                    |                     t          j                            |d          }g d}g d}t          j                    }t          j        |           	 t          |           t          |           t          j        |           n# t          j        |           w xY w|                     t          j        	                    |                     |                     |                     |          | j                   |                     |                     |          | j                   t          j                            |d          }t          j                    }t          j        |           	 t          |dd            t          j        |           n# t          j        |           w xY w|dz   }|                     t          j        	                    |                     t          j                            |d          }t          j                    }t          j        |           	 t          |dd d	
           t          j        |           n# t          j        |           w xY w|dz   }|                     t          j        	                    |                     d S )Nr   r@   r    zarchive2.tar.gz)rW   z-cfarchive2.tarr@   )r-   z-fz-9ri   r"   r!   Tr#   dry_run)r%   rA   r   r   rD   getcwdchdirr   rE   rF   r   rG   rH   rI   )	r'   r)   rM   rN   old_dirrO   tarball2tar_cmdgzip_cmds	            r   test_tarfile_vs_tarz'ArchiveUtilTestCase.test_tarfile_vs_tar   s    $$&&,,..GLL)44	)++
	F+++HWBHW i'w//000 7<<(9::888777)++
	'NNN(OOOHWBHWx00111w//1DEEEx00$2EFFF GLL)44	)++
	FT::::HWBHWf$w//000 GLL)44	)++
	FT4HHHHHWBHWf$w//00000s0   1B B,6E) )E?I? ?JL? ?Mr#   z The compress program is requiredc                    |                                  }t          j                            |                                 d          }t          j                    }t          j        |           	 t                      5 }t          j	        d           t          |dd           d d d            n# 1 swxY w Y   t          j        |           n# t          j        |           w xY w|dz   }|                     t          j                            |                     |                     t          |j                  d           t          j        |           t          j                    }t          j        |           	 t                      5 }t          j	        d           t          |ddd	           d d d            n# 1 swxY w Y   t          j        |           n# t          j        |           w xY w|                     t          j                            |                     |                     t          |j                  d           d S )
Nr   alwaysr@   r#   r"   z.tar.Zr?   Trj   )r%   r   r   rD   rA   rl   rm   r   warningssimplefilterr   rE   rF   rG   lenremoveassertFalse)r'   r)   rN   rn   wrO   s         r   test_compress_deprecatedz,ArchiveUtilTestCase.test_compress_deprecated   s    $$&&GLL;;	 )++
	!! EQ%h///YDDDDE E E E E E E E E E E E E E E HWBHWh&w//000QZ!,,, 		')++
	!! +Q%h///Y%)+ + + ++ + + + + + + + + + + + + + +
 HWBHW00111QZ!,,,,,s`   /C ='B0$C 0B44C 7B48C C&G& (G:G& G

G& G
G& &G<z Need zip and zlib support to runc                 <   |                                  }t          j                            |                                 d          }t          |          5  t          |d           d d d            n# 1 swxY w Y   |dz   }|                     t          j                            |                     t          j
        |          5 }|                     t          |                                          | j                   d d d            d S # 1 swxY w Y   d S )Nr   r@   .zip)r%   r   r   rD   rA   r   r   rE   rF   zipfileZipFilerG   sortednamelist_zip_created_files)r'   r)   rN   rO   zfs        r   test_make_zipfilez%ArchiveUtilTestCase.test_make_zipfile   s~    ##%%GLL;;	 	, 	,F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, f$w//000_W%% 	MVBKKMM22D4KLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms$   A33A7:A7	;DDDzNeed zip support to runc                 &   t          | t          j        dd            g t          j        fd}t          | t          j        d|           |                                 }t
          j                            |                                 d          }t          |          5  t          |d           d d d            n# 1 swxY w Y   |dz   }|                     |dfdt          j        ifg           |                     t
          j                            |                     t          j        |          5 }|                     t          |                                          | j                   d d d            d S # 1 swxY w Y   d S )	Nzlibc                      |                     dd           t          j        k    r                    | |f            | i |S )Ncompression)getr~   
ZIP_STOREDappend)akwcalledzipfile_classs     r   fake_zipfilezCArchiveUtilTestCase.test_make_zipfile_no_zlib.<locals>.fake_zipfile  sJ    vvmT**g.@@@q"g&&& =!*r***r+   r   r   r@   r}   rz   r   )r   r   r~   r   r%   r   r   rD   rA   r   r   rG   r   rE   rF   r   r   r   )r'   r   r)   rN   rO   r   r   r   s         @@r   test_make_zipfile_no_zlibz-ArchiveUtilTestCase.test_make_zipfile_no_zlib   s   dL(&$777	+ 	+ 	+ 	+ 	+ 	+
 	dL()\BBB ##%%GLL;;	 	, 	,F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, f$#S>M7;M+NOP	R 	R 	Rw//000_W%% 	MVBKKMM22D4KLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms$   $CCC>;FF
F
c                     |                      t          g d          d           |                     t          g d                     d S )N)gztarra   r   ra   )r   bztarxztarztarrW   r   )rG   r   assertIsNoner9   s    r   test_check_archive_formatsz.ArchiveUtilTestCase.test_check_archive_formats  sw    ./F/F/FGG	  	  	 / 1G 1G 1G H H 	I 	I 	I 	I 	Ir+   c                     |                                  }t          j                            |d          }|                     t
          t          |d           d S )Nr   ra   )rA   r   r   rD   assertRaises
ValueErrorr   )r'   r)   rN   s      r   test_make_archivez%ArchiveUtilTestCase.test_make_archive  sD    GLL33	*lIuEEEEEr+   c                     t          j                    }d }|g dft          d<   	 	 t          dd|                                            n#  Y nxY w|                     t          j                    |           t          d= d S # t          d= w xY w)Nc                      t                      rQ   )RuntimeError)argsr   s     r   _breaksz:ArchiveUtilTestCase.test_make_archive_cwd.<locals>._breaks#  s    .. r+   zxxx filera   )root_dir)r   rl   r	   r   rA   rG   )r'   current_dirr   s      r   test_make_archive_cwdz)ArchiveUtilTestCase.test_make_archive_cwd!  s    ikk	! 	! 	!")2z!:	'UEDLLNNCCCCCRY[[+666&&&&&&&&s   $A 
B A,B 
Bc                    |                                  }t          j                            |                                 d          }t          |d|d          }|                     t          j                            |                     |                     t          j        	                    |          d           |                     | 
                    |          | j                   d S )Nr   rW   r@   zarchive.tarr%   r   r   rD   rA   r   rE   rF   rG   basenamerH   rI   r'   base_dirrN   ress       r   test_make_archive_tarz)ArchiveUtilTestCase.test_make_archive_tar/  s    &&((GLL)<<	9eXv>>s++,,,))#..>>>s++T-@AAAAAr+   c                    |                                  }t          j                            |                                 d          }t          |d|d          }|                     t          j                            |                     |                     t          j        	                    |          d           |                     | 
                    |          | j                   d S )Nr   r   r@   zarchive.tar.gzr   r   s       r   test_make_archive_gztarz+ArchiveUtilTestCase.test_make_archive_gztar7      &&((GLL)<<	9gx@@s++,,,))#..0@AAAs++T-@AAAAAr+   c                    |                                  }t          j                            |                                 d          }t          |d|d          }|                     t          j                            |                     |                     t          j        	                    |          d           |                     | 
                    |          | j                   d S )Nr   r   r@   zarchive.tar.bz2r   r   s       r   test_make_archive_bztarz+ArchiveUtilTestCase.test_make_archive_bztar@  s    &&((GLL)<<	9gx@@s++,,,))#..0ABBBs++T-@AAAAAr+   zNeed xz support to runc                    |                                  }t          j                            |                                 d          }t          |d|d          }|                     t          j                            |                     |                     t          j        	                    |          d           |                     | 
                    |          | j                   d S )Nr   r   r@   zarchive.tar.xzr   r   s       r   test_make_archive_xztarz+ArchiveUtilTestCase.test_make_archive_xztarI  r   r+   c                 l   t           r5t          j        d          d         }t          j        d          d         }ndx}}|                                 }|                                 }t          j        	                    |                                 d          }t          |d||||          }|                     t          j                            |                     t          |d||          }|                     t          j                            |                     t          |d||||          }|                     t          j                            |                     t          |d||dd          }|                     t          j                            |                     d S )	Nr   rootr   r   )ownergrouprW   	kjhkjhkjgoihohoh)UID_GID_SUPPORTgrpgetgrgidpwdgetpwuidr%   rA   r   r   rD   r   rE   rF   )r'   r   r   r   r   rN   r   s          r   test_make_archive_owner_groupz1ArchiveUtilTestCase.test_make_archive_owner_groupR  ss     	#LOOA&ELOOA&EE""EE&&((<<>>GLL)<<	9eXxu!&( ( (s++,,,9eXx@@s++,,,9eXx!&e5 5 5s++,,,9eXx!,I? ? ?s++,,,,,r+   zRequires zlibzRequires grp and pwd supportc                 R   |                                  }t          j                            |                                 d          }t          j                    }t          j        |           t          j        d          d         }t          j
        d          d         }	 t          |dd ||          }t          j        |           n# t          j        |           w xY w|                     t          j                            |                     t          j        |          }	 |                                D ]8}|                     |j        d           |                     |j        d           9	 |                                 d S # |                                 w xY w)Nr   r   r@   )r#   r   r   )r%   r   r   rD   rA   rl   rm   r   r   r   r   r   rE   rF   rR   rS   
getmembersrG   uidgidrV   )	r'   r)   rN   rn   r   r   archive_namer   members	            r   test_tarfile_root_ownerz+ArchiveUtilTestCase.test_tarfile_root_ownerm  ss    $$&&GLL;;	)++
Q"Q"	'	6D.35B B BL HWBHW 	|44555 ,|,,	!,,.. 0 0  Q///  Q////0 MMOOOOOGMMOOOOs   #C C",AF F&N)r   )$__name__
__module____qualname__rB   rC   ZLIB_SUPPORTr*   r/   bz2r2   lzmar5   r   r:   r=   r&   rH   r   rI   r%   r
   rr   r{   ZIP_SUPPORTr   r   r   r   r   r   r   r   r   r   r   r    r+   r   r   r   >   s        X'ABB@ @ @ CB@ X'ABBJ J CBJ X788L L 98L X9::H H ;:H Xy1113 3* *3 3* X';<<13 35 53 35F F F   G G G@@-?@@@N
 
 
 X// *OOF4K4K *)EG G41 41G G41l X44;= =- -= =-> X5;= =M M= =M X&?@@M M A@M2I I IF F F
' ' 'B B B X'ABBB B CBB X788B B 98B X788B B 98B- - -6 X77X*HII  JI 87  r+   r   __main__),__doc__rB   r   r   rR   os.pathr   ru   	distutilsr   distutils.archive_utilr   r   r   r   r	   distutils.spawnr
   r   distutils.testsr   test.supportr   test.support.os_helperr   test.support.warnings_helperr   r   r   r   ImportErrorr~   r   r   r   r   r   r   TempdirManagerLoggingSilencerTestCaser   r   mainr   r+   r   <module>r      s   ' '  				 



         " " " " " "5 5 5 5 5 5 5 5 5 5 5 5 5 5 3 2 2 2 2 2 2 2 # # # # # #       - - - - - - 7 7 7 7 7 7JJJJJJOO   OOO)NNNKK ) ) )!/%((KKK)KKKLL   LLLJJJJ   
CCCKKKK   DDD
 
 
H H H H H'0!1"+H H HT
 zHMOOOOO sZ   
A A'&A'+A2 2BB	B BBB# #B-,B-1B6 6C ?C 