
    sh.                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSK	J
r
JrJrJrJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr  S	S
KJrJrJrJrJr  S rS r S r! " S S\RD                  5      r#g)z!Tests for distutils.archive_util.    N)archive_util)ARCHIVE_FORMATScheck_archive_formatsmake_archivemake_tarballmake_zipfile)spawn)support)
splitdrive)patch   )UID_0_SUPPORTgrppwdrequire_uid_0require_unix_idc                     [         R                  R                  (       a  g U R                  [        R
                  " 5       5        g! [         a     gf = f)z>
Return True if the filename can be saved in the file system.
TF)ospathsupports_unicode_filenamesencodesysgetfilesystemencodingUnicodeEncodeError)filenames    ځ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/setuptools/_distutils/tests/test_archive_util.pycan_fs_encoder      sG     
ww))1134   s   $A 
AAc                 L    [         R                  " [        R                  U 5      $ N)	functoolsreduceoperatoreq)valuess    r   	all_equalr%   )   s    HKK00    c                  &    [        S U  5       5      $ )Nc              3   b   #    U  H%  n[         R                  " U5      R                  v   M'     g 7fr   )pathlibPathdrive).0r   s     r   	<genexpr>same_drive.<locals>.<genexpr>.   s     @%$W\\$'--%s   -/)r%   )pathss    r   
same_driver0   -   s    @%@@@r&   c                       \ rS rSr\R
                  R                  S5      SS j5       r\R
                  R                  S5      S 5       rS r	S r
\R
                  R                  S5      S 5       r\R
                  R                  S	5      S
 5       rS rS r/ SQr\ V Vs/ s H  oR#                  S5      PM     snn rS r\R
                  R                  S5      \R
                  R                  S5      S 5       5       r\R
                  R                  S5      S 5       rS rS rS rS rS r\R
                  R                  S5      S 5       rS rS rS r\R
                  R                  S5      \\ S 5       5       5       r!Sr"gs  snn f ) ArchiveUtilTestCase1   
needs_zlibc                 j    U R                  5       nU R                  X!S5        U R                  X!SS S9  g )N.tar.gz.tarcompress_create_files_make_tarball)selfnametmpdirs      r   test_make_tarball%ArchiveUtilTestCase.test_make_tarball2   s7     ##%636$?r&   c                 H    U R                  5       nU R                  USSSS9  g )Narchiver6   gzipr8   r:   r=   r?   s     r   test_make_tarball_gzip*ArchiveUtilTestCase.test_make_tarball_gzip:   s'    ##%69i&Ir&   c                 t    [         R                  " S5        U R                  5       nU R                  USSSS9  g )Nbz2rC   z.tar.bz2bzip2r8   pytestimportorskipr;   r<   rE   s     r   test_make_tarball_bzip2+ArchiveUtilTestCase.test_make_tarball_bzip2?   s5    E"##%69j7Kr&   c                 t    [         R                  " S5        U R                  5       nU R                  USSSS9  g )NlzmarC   z.tar.xzxzr8   rK   rE   s     r   test_make_tarball_xz(ArchiveUtilTestCase.test_make_tarball_xzD   s5    F###%69i$Gr&   u   not can_fs_encode('årchiv')c                 &    U R                  S5        g)zF
Mirror test_make_tarball, except filename contains latin characters.
u   årchivNr@   r=   s    r   test_make_tarball_latin1,ArchiveUtilTestCase.test_make_tarball_latin1I   s    
 	y)r&   u'   not can_fs_encode('のアーカイブ')c                 &    U R                  S5        g)zc
Mirror test_make_tarball, except filename contains extended
characters outside the latin charset.
u   のアーカイブNrV   rW   s    r   test_make_tarball_extended.ArchiveUtilTestCase.test_make_tarball_extendedP   s     	34r&   c                    U R                  5       n[        X5      (       a  [        R                  " S5        [        R
                  R                  XR5      n[
        R                  " U5         [        [        U5      S   S40 UD6  S S S 5        Xc-   n[        R
                  R                  U5      (       d   eU R                  U5      U R                  :X  d   eg ! , (       d  f       NZ= f)Nz)source and target should be on same driver   dist)mkdtempr0   rL   skipr   r   joinr*   r   r   exists_tarinfo_created_files)r=   r?   target_namesuffixkwargstmpdir2	base_nametarballs           r   r<   !ArchiveUtilTestCase._make_tarballX   s    ,,.f&&KKCDGGLL6	 YYvI.q16DVD  $ww~~g&&&&}}W%)<)<<<< s   ,C
C(c                     [         R                  " U5      n UR                  5       nUR                  5         UUR	                  5         $ ! UR	                  5         f = fr   )tarfileopengetnamessortclose)r=   r   tarnamess       r   rc   ArchiveUtilTestCase._tarinfoh   s?    ll4 	LLNEJJLIIKCIIKs   !A
 
A)zdist/z
dist/file1z
dist/file2z	dist/sub/zdist/sub/file3z
dist/sub2//c                    U R                  5       n[        R                  R                  US5      n[        R                  " U5        U R                  US/S5        U R                  US/S5        [        R                  " [        R                  R                  US5      5        U R                  USS/S5        [        R                  " [        R                  R                  US5      5        U$ )Nr^   file1xxxfile2subfile3sub2)r_   r   r   ra   mkdir
write_file)r=   r?   r^   s      r   r;   !ArchiveUtilTestCase._create_files{   s    ww||FF+
w/w/
dE*+ug.6
dF+,r&   z2not (shutil.which('tar') and shutil.which('gzip'))c                    U R                  5       nU R                  5       n[        R                  R	                  US5      n[        R
                  " 5       n[        R                  " U5         [        US5        [        R                  " U5        US-   n[        R                  R                  U5      (       d   e[        R                  R	                  US5      n/ SQn/ SQn[        R
                  " 5       n[        R                  " U5         [        U5        [        U5        [        R                  " U5        [        R                  R                  U5      (       d   eU R                  U5      U R                  :X  d   eU R                  U5      U R                  :X  d   e[        R                  R	                  US5      n[        R
                  " 5       n[        R                  " U5         [        USS S9  [        R                  " U5        US-   n[        R                  R                  U5      (       d   e[        R                  R	                  US5      n[        R
                  " 5       n[        R                  " U5         [        USS S	S
9  [        R                  " U5        US-   n[        R                  R                  U5      (       d   eg ! [        R                  " U5        f = f! [        R                  " U5        f = f! [        R                  " U5        f = f! [        R                  " U5        f = f)NrC   r^   r6   zarchive2.tar.gz)rr   z-cfarchive2.tarr^   )rD   z-fz-9r   r8   r7   T)r9   dry_run)r;   r_   r   r   ra   getcwdchdirr   rb   r	   rc   rd   )	r=   r?   rh   ri   old_dirrj   tarball2tar_cmdgzip_cmds	            r   test_tarfile_vs_tar'ArchiveUtilTestCase.test_tarfile_vs_tar   sL    ##%,,.GGLL)4	))+
	F+HHW i'ww~~g&&&& 77<<(9:87))+
	'N(OHHWww~~h''''}}W%)<)<<<<}}X&$*=*==== GGLL)4	))+
	FT:HHWf$ww~~g&&&& GGLL)4	))+
	FT4HHHWf$ww~~g&&&&W HHW  HHW HHW HHWs0   -K K/ .L
 L% K,/L
L"%L=c                 $   [         R                  " S5      nU R                  5       n[        R                  R                  U R                  5       S5      n[        R                  " U5         [        US5        S S S 5        US-   n[        R                  R                  U5      (       d   eUR                  U5       n[        UR                  5       5      U R                  :X  d   e S S S 5        g ! , (       d  f       N~= f! , (       d  f       g = f)NzipfilerC   r^   .zip)rL   rM   r;   r   r   ra   r_   r*   r   rb   ZipFilesortednamelist_zip_created_files)r=   r   r?   ri   rj   zfs         r   test_make_zipfile%ArchiveUtilTestCase.test_make_zipfile   s    %%i0##%GGLL;	YYvF+  f$ww~~g&&&&__W%"++-(D,C,CCCC &%  &%s   +C0<*D0
C>
Dc                   ^^^ [         R                  " S5      m[        U [        R                  SS 5        / mTR
                  mUUU4S jn[        U [        R                  SU5        U R                  5       n[        R                  R                  U R                  5       S5      n[        R                  " U5         [        US5        S S S 5        US-   nTUS4S	TR                  04/:X  d   e[        R                  R                  U5      (       d   eTR                  U5       n[        UR!                  5       5      U R"                  :X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)
Nr   zlibc                  x   > UR                  SS 5      TR                  :X  a  TR                  X45        T" U 0 UD6$ )Ncompression)get
ZIP_STOREDappend)akwcalledr   zipfile_classs     r   fake_zipfileCArchiveUtilTestCase.test_make_zipfile_no_zlib.<locals>.fake_zipfile   s:    vvmT*g.@.@@qg& !*r**r&   r   rC   r^   r   wr   )rL   rM   r   r   r   r   r;   r   r   ra   r_   r*   r   r   rb   r   r   r   )	r=   r   r?   ri   rj   r   r   r   r   s	         @@@r   test_make_zipfile_no_zlib-ArchiveUtilTestCase.test_make_zipfile_no_zlib   s&   %%i0dL((&$7	+
 	dL(()\B ##%GGLL;	YYvF+  f$GS>M7;M;M+NOPPPPww~~g&&&&__W%"++-(D,C,CCCC &%  &%s   <E&*E+
E(+
E9c                 L    [        / SQ5      S:X  d   e[        / SQ5       b   eg )N)gztarrx   ziprx   )r   bztarxztarztarrr   r   )r   rW   s    r   test_check_archive_formats.ArchiveUtilTestCase.test_check_archive_formats   s1    $%<=FFF!"ST	
r&   c                     U R                  5       n[        R                  R                  US5      n[        R
                  " [        5         [        US5        S S S 5        g ! , (       d  f       g = f)NrC   rx   )r_   r   r   ra   rL   raises
ValueErrorr   )r=   r?   ri   s      r   test_make_archive%ArchiveUtilTestCase.test_make_archive   sC    GGLL3	]]:&E* '&&s   A!!
A/c                 <   [         R                  " 5       nS nU/ S4[        S'     [        SSU R	                  5       S9  [         R                  " 5       U:X  d   e [        R                  " S5        g ! [
         a     N?f = f! [        R                  " S5        f = f)Nc                      [        5       er   )RuntimeError)argsr   s     r   _breaks:ArchiveUtilTestCase.test_make_archive_cwd.<locals>._breaks   s
    . r&   zxxx filerx   )root_dir)r   r   r   r   r_   	Exceptionpop)r=   current_dirr   s      r   test_make_archive_cwd)ArchiveUtilTestCase.test_make_archive_cwd   s    iik	! #*2z!:	'UEDLLNC 99;+---&	   &s)   A3  B 3
B =B ?B  B Bc                 t   U R                  5       n[        R                  R                  U R	                  5       S5      n[        USUS5      n[        R                  R                  U5      (       d   e[        R                  R                  U5      S:X  d   eU R                  U5      U R                  :X  d   eg )NrC   rr   r^   zarchive.tar
r;   r   r   ra   r_   r   rb   basenamerc   rd   r=   base_dirri   ress       r   test_make_archive_tar)ArchiveUtilTestCase.test_make_archive_tar  s    %%'GGLL;	9eXv>ww~~c""""ww$555}}S!T%8%8888r&   c                 t   U R                  5       n[        R                  R                  U R	                  5       S5      n[        USUS5      n[        R                  R                  U5      (       d   e[        R                  R                  U5      S:X  d   eU R                  U5      U R                  :X  d   eg )NrC   r   r^   zarchive.tar.gzr   r   s       r   test_make_archive_gztar+ArchiveUtilTestCase.test_make_archive_gztar  s    %%'GGLL;	9gx@ww~~c""""ww$(8888}}S!T%8%8888r&   c                    [         R                  " S5        U R                  5       n[        R                  R                  U R                  5       S5      n[        USUS5      n[        R                  R                  U5      (       d   e[        R                  R                  U5      S:X  d   eU R                  U5      U R                  :X  d   eg )NrI   rC   r   r^   zarchive.tar.bz2rL   rM   r;   r   r   ra   r_   r   rb   r   rc   rd   r   s       r   test_make_archive_bztar+ArchiveUtilTestCase.test_make_archive_bztar  s    E"%%'GGLL;	9gx@ww~~c""""ww$(9999}}S!T%8%8888r&   c                    [         R                  " S5        U R                  5       n[        R                  R                  U R                  5       S5      n[        USUS5      n[        R                  R                  U5      (       d   e[        R                  R                  U5      S:X  d   eU R                  U5      U R                  :X  d   eg )NrQ   rC   r   r^   zarchive.tar.xzr   r   s       r   test_make_archive_xztar+ArchiveUtilTestCase.test_make_archive_xztar  s    F#%%'GGLL;	9gx@ww~~c""""ww$(8888}}S!T%8%8888r&   c           	         [         (       a3  [        R                  " S5      S   n[        R                  " S5      S   nOS=pU R                  5       nU R                  5       n[        R                  R                  U R                  5       S5      n[        USXCX!S9n[        R                  R                  U5      (       d   e[        USXC5      n[        R                  R                  U5      (       d   e[        USXCX!S9n[        R                  R                  U5      (       d   e[        USXCSSS9n[        R                  R                  U5      (       d   eg )	Nr   rootrC   r   )ownergrouprr   	kjhkjhkjgoihohoh)r   r   getgrgidr   getpwuidr;   r_   r   r   ra   r   rb   )r=   r   r   r   r   ri   r   s          r   test_make_archive_owner_group1ArchiveUtilTestCase.test_make_archive_owner_group(  s    =LLOA&ELLOA&E""E%%'<<>GGLL;	uh
 ww~~c""""9eX@ww~~c""""uh
 ww~~c""""uh9
 ww~~c""""r&   c                    U R                  5       n[        R                  R                  U R	                  5       S5      n[        R
                  " 5       n[        R                  " U5        [        R                  " S5      S   n[        R                  " S5      S   n [        USS XTS9n[        R                  " U5        [        R                  R                  U5      (       d   e[        R                  " U5      n UR                  5        H'  nUR                   S:X  d   eUR"                  S:X  a  M'   e   UR%                  5         g ! [        R                  " U5        f = f! UR%                  5         f = f)NrC   r   r^   )r9   r   r   )r;   r   r   ra   r_   r   r   r   r   r   r   r   rb   rm   rn   
getmembersuidgidrq   )	r=   r?   ri   r   r   r   archive_namerC   members	            r   test_tarfile_root_owner+ArchiveUtilTestCase.test_tarfile_root_ownerF  s    ##%GGLL;	))+
Q"Q"	'6DL HHW ww~~l++++ ,,|,	!,,.zzQ&zzQ& / MMO HHW MMOs   E <3E# 3E# E #E5 N)rC   )#__name__
__module____qualname____firstlineno__rL   markusefixturesr@   rF   rN   rS   skipifrX   r[   r<   rc   r   rstriprd   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__)r,   ps   00r   r2   r2   1   s   [[\*@ +@ [[\*J +JL
H
 [[67* 8* [[AB5 C5=  .@@-?hhsm-?@N
 [[\*[[LM4' N +4'l [[\*D +DD4
+' 9 [[\*9 +999#< [[\*   +a As   "F
r2   )$__doc__r    r"   r   r)   r   rm   	distutilsr   distutils.archive_utilr   r   r   r   r   distutils.spawnr	   distutils.testsr
   os.pathr   r   rL   test.supportr   unix_compatr   r   r   r   r   r   r%   r0   TempdirManagerr2   r   r&   r   <module>r      se    '   	  
  "  " #     P P
1Ap'00 pr&   