
    ϶vg.                         d Z ddlZ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
mZmZmZ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dlmZ d	d
lmZmZmZmZmZ d Zd Z d Z! G d dej"                  Z#dS )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                     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    j/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_distutils/tests/test_archive_util.pycan_fs_encoder      s`     
w) t1334444   uu4s   &< 
A
	A
c                 @    t          j        t          j        |           S N)	functoolsreduceoperatoreq)valuess    r   	all_equalr%   )   s    HK000    c                  4    t          d | D                       S )Nc              3   H   K   | ]}t          j        |          j        V  d S r   )pathlibPathdrive).0r   s     r   	<genexpr>zsame_drive.<locals>.<genexpr>.   s/      @@$W\$''-@@@@@@r&   )r%   )pathss    r   
same_driver/   -   s    @@%@@@@@@r&   c                      e Zd Zej                            d          dd            Zej                            d          d             Zd Zd Z	ej        
                    d          d             Zej        
                    d	          d
             Zd Zd Zg dZd eD             Zd Zej                            d          ej        
                    d          d                         Zej                            d          d             Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Zd Zej                            d          eed                                     ZdS )ArchiveUtilTestCase
needs_zlib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_tarball2   sP     ##%%6433364$?????r&   c                 `    |                                  }|                     |ddd           d S )Nr3   r5   gzipr7   r9   r<   r>   s     r   test_make_tarball_gzipz*ArchiveUtilTestCase.test_make_tarball_gzip:   s6    ##%%69i&IIIIIr&   c                     t          j        d           |                                 }|                     |ddd           d S )Nbz2r3   z.tar.bz2bzip2r7   pytestimportorskipr:   r;   rB   s     r   test_make_tarball_bzip2z+ArchiveUtilTestCase.test_make_tarball_bzip2?   sG    E"""##%%69j7KKKKKr&   c                     t          j        d           |                                 }|                     |ddd           d S )Nlzmar3   z.tar.xzxzr7   rG   rB   s     r   test_make_tarball_xzz(ArchiveUtilTestCase.test_make_tarball_xzD   sG    F#####%%69i$GGGGGr&   u   not can_fs_encode('årchiv')c                 0    |                      d           dS )zV
        Mirror test_make_tarball, except filename contains latin characters.
        u   årchivNr?   r<   s    r   test_make_tarball_latin1z,ArchiveUtilTestCase.test_make_tarball_latin1I   s    
 	y)))))r&   u'   not can_fs_encode('のアーカイブ')c                 0    |                      d           dS )z{
        Mirror test_make_tarball, except filename contains extended
        characters outside the latin charset.
        u   のアーカイブNrP   rQ   s    r   test_make_tarball_extendedz.ArchiveUtilTestCase.test_make_tarball_extendedP   s     	344444r&   c                    |                                  }t          ||          rt          j        d           t          j                            ||          }t          j        |          5  t          t          |          d         dfi | d d d            n# 1 swxY w Y   ||z   }t          j        
                    |          sJ |                     |          | j        k    sJ d S )Nz)source and target should be on same driver   dist)mkdtempr/   rH   skipr   r   joinr*   r   r   exists_tarinfo_created_files)r<   r>   target_namesuffixkwargstmpdir2	base_nametarballs           r   r;   z!ArchiveUtilTestCase._make_tarballX   s1   ,,..fg&& 	EKCDDDGLL+66	 Yv 	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~~g&&&&&}}W%%)<<<<<<<s   -"BB"Bc                     t          j        |          }	 |                                }|                                 ||                                 S # |                                 w xY wr   )tarfileopengetnamessortclose)r<   r   tarnamess       r   r[   zArchiveUtilTestCase._tarinfoh   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)r,   ps     r   
<listcomp>zArchiveUtilTestCase.<listcomp>y   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 )NrV   file1xxxfile2subfile3sub2)rW   r   r   rY   mkdir
write_file)r<   r>   rV   s      r   r:   z!ArchiveUtilTestCase._create_files{   s    w||FF++
w///w///
dE**+++ug.666
dF++,,,r&   z2not (shutil.which('tar') and shutil.which('gzip'))c                 b   |                                  }|                                 }t          j                            |d          }t          j                    }t          j        |           	 t          |d           t          j        |           n# t          j        |           w xY w|dz   }t          j                            |          s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                            |          sJ | 
                    |          | j        k    sJ | 
                    |          | j        k    sJ t          j                            |d          }t          j                    }t          j        |           	 t          |dd            t          j        |           n# t          j        |           w xY w|dz   }t          j                            |          s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                            |          sJ d S )Nr3   rV   r5   zarchive2.tar.gz)ri   z-cfarchive2.tarrV   )rA   z-fz-9rz   r7   r6   T)r8   dry_run)r:   rW   r   r   rY   getcwdchdirr   rZ   r	   r[   r\   )	r<   r>   r`   ra   old_dirrb   tarball2tar_cmdgzip_cmds	            r   test_tarfile_vs_tarz'ArchiveUtilTestCase.test_tarfile_vs_tar   s    ##%%,,..GLL)44	)++
	F+++HWBHW i'w~~g&&&&& 7<<(9::888777)++
	'NNN(OOOHWBHWw~~h'''''}}W%%)<<<<<}}X&&$*===== GLL)44	)++
	FT::::HWBHWf$w~~g&&&&& GLL)44	)++
	FT4HHHHHWBHWf$w~~g&&&&&&&s0   1B B,%E E.I IK0 0Lc                 4   t          j        d          }|                                 }t          j                            |                                 d          }t	          j        |          5  t          |d           d d d            n# 1 swxY w Y   |dz   }t          j        	                    |          sJ |
                    |          5 }t          |                                          | j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzipfiler3   rV   .zip)rH   rI   r:   r   r   rY   rW   r*   r   rZ   ZipFilesortednamelist_zip_created_files)r<   r   r>   ra   rb   zfs         r   test_make_zipfilez%ArchiveUtilTestCase.test_make_zipfile   s   %i00##%%GLL;;	Yv 	, 	,F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, f$w~~g&&&&&__W%% 	D"++--((D,CCCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds$   /BBB-DDDc                    t          j        d          t          | t          j        dd            g j        fd}t          | t          j        d|           |                                 }t          j        	                    | 
                                d          }t          j        |          5  t          |d           d d d            n# 1 swxY w Y   |dz   }|dfd	j        ifgk    sJ t          j                            |          sJ                     |          5 }t          |                                          | j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr   zlibc                      |                     dd           j        k    r                    | |f            | i |S )Ncompression)get
ZIP_STOREDappend)akwcalledr   zipfile_classs     r   fake_zipfilezCArchiveUtilTestCase.test_make_zipfile_no_zlib.<locals>.fake_zipfile   sJ    vvmT**g.@@@q"g&&& =!*r***r&   r   r3   rV   r   wr   )rH   rI   r   r   r   r   r:   r   r   rY   rW   r*   r   r   rZ   r   r   r   )	r<   r   r>   ra   rb   r   r   r   r   s	         @@@r   test_make_zipfile_no_zlibz-ArchiveUtilTestCase.test_make_zipfile_no_zlib   s   %i00dL(&$777	+ 	+ 	+ 	+ 	+ 	+ 	+
 	dL()\BBB ##%%GLL;;	Yv 	, 	,F+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, f$GS>M7;M+NOPPPPPw~~g&&&&&__W%% 	D"++--((D,CCCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds$   :CCC1-E,,E03E0c                 \    t          g d          dk    sJ t          g d          	 J d S )N)gztarrr   ziprr   )r   bztarxztarztarri   r   )r   rQ   s    r   test_check_archive_formatsz.ArchiveUtilTestCase.test_check_archive_formats   sP    $%<%<%<==FFFF!"S"S"STT    r&   c                     |                                  }t          j                            |d          }t	          j        t                    5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr3   rr   )rW   r   r   rY   rH   raises
ValueErrorr   )r<   r>   ra   s      r   test_make_archivez%ArchiveUtilTestCase.test_make_archive   s    GLL33	]:&& 	+ 	+E***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A,,A03A0c                 H   t          j                    }d }|g dft          d<   	 	 t          dd|                                            n# t
          $ r Y nw xY wt          j                    |k    sJ 	 t          j        d           d S # t          j        d           w xY w)Nc                      t                      r   )RuntimeError)argsr   s     r   _breaksz:ArchiveUtilTestCase.test_make_archive_cwd.<locals>._breaks   s    .. r&   zxxx filerr   )root_dir)r   r|   r   r   rW   	Exceptionpop)r<   current_dirr   s      r   test_make_archive_cwdz)ArchiveUtilTestCase.test_make_archive_cwd   s    ikk	! 	! 	! #*2z!:	'UEDLLNNCCCCC   9;;+-----&&&&&O&&&&s)   $A 
B 
AB AB B!c                    |                                  }t          j                            |                                 d          }t          |d|d          }t          j                            |          sJ t          j                            |          dk    sJ |                     |          | j	        k    sJ d S )Nr3   ri   rV   zarchive.tar
r:   r   r   rY   rW   r   rZ   basenamer[   r\   r<   base_dirra   ress       r   test_make_archive_tarz)ArchiveUtilTestCase.test_make_archive_tar  s    %%''GLL;;	9eXv>>w~~c"""""w$$5555}}S!!T%8888888r&   c                    |                                  }t          j                            |                                 d          }t          |d|d          }t          j                            |          sJ t          j                            |          dk    sJ |                     |          | j	        k    sJ d S )Nr3   r   rV   zarchive.tar.gzr   r   s       r   test_make_archive_gztarz+ArchiveUtilTestCase.test_make_archive_gztar  s    %%''GLL;;	9gx@@w~~c"""""w$$(88888}}S!!T%8888888r&   c                    t          j        d           |                                 }t          j                            |                                 d          }t          |d|d          }t          j                            |          sJ t          j        	                    |          dk    sJ | 
                    |          | j        k    sJ d S )NrE   r3   r   rV   zarchive.tar.bz2rH   rI   r:   r   r   rY   rW   r   rZ   r   r[   r\   r   s       r   test_make_archive_bztarz+ArchiveUtilTestCase.test_make_archive_bztar  s    E"""%%''GLL;;	9gx@@w~~c"""""w$$(99999}}S!!T%8888888r&   c                    t          j        d           |                                 }t          j                            |                                 d          }t          |d|d          }t          j                            |          sJ t          j        	                    |          dk    sJ | 
                    |          | j        k    sJ d S )NrL   r3   r   rV   zarchive.tar.xzr   r   s       r   test_make_archive_xztarz+ArchiveUtilTestCase.test_make_archive_xztar  s    F###%%''GLL;;	9gx@@w~~c"""""w$$(88888}}S!!T%8888888r&   c                    t           r5t          j        d          d         }t          j        d          d         }ndx}}|                                 }|                                 }t          j        	                    |                                 d          }t          |d||||          }t          j                            |          sJ t          |d||          }t          j                            |          sJ t          |d||||          }t          j                            |          sJ t          |d||dd          }t          j                            |          sJ d S )	Nr   rootr3   r   )ownergroupri   	kjhkjhkjgoihohoh)r   r   getgrgidr   getpwuidr:   rW   r   r   rY   r   rZ   )r<   r   r   r   r   ra   r   s          r   test_make_archive_owner_groupz1ArchiveUtilTestCase.test_make_archive_owner_group(  sa     	#LOOA&ELOOA&EE""EE%%''<<>>GLL;;	uhU
 
 
 w~~c"""""9eXx@@w~~c"""""uhU
 
 
 w~~c"""""uh9
 
 
 w~~c"""""""r&   c                    |                                  }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                            |          sJ t          j        |          }	 |                                D ]}|j        dk    sJ |j        dk    sJ 	 |                                 d S # |                                 w xY w)Nr3   r   rV   )r8   r   r   )r:   r   r   rY   rW   r|   r}   r   r   r   r   r   rZ   rd   re   
getmembersuidgidrh   )	r<   r>   ra   r~   r   r   archive_namer3   members	            r   test_tarfile_root_ownerz+ArchiveUtilTestCase.test_tarfile_root_ownerF  sW    ##%%GLL;;	)++
Q"Q"	'6DU  L HWBHW w~~l+++++ ,|,,	!,,.. ' 'zQzQ' MMOOOOOGMMOOOOs   #C C"1E# #E9N)r3   ) __name__
__module____qualname__rH   markusefixturesr?   rC   rJ   rN   skipifrR   rT   r;   r[   r   r\   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r&   r   r1   r1   1   s       [\**@ @ @ +*@ [\**J J +*JL L L
H H H
 [677* * 87* [ABB5 5 CB5= = =      A@-?@@@N
 
 
 [\**[LMM4' 4' NM +*4'l [\**D D +*DD D D4
 
 
+ + +' ' ' 9 9 9 [\**9 9 +*99 9 99 9 9# # #< [\**  ] _ +*  r&   r1   )$__doc__r    r"   r   r)   r   rd   	distutilsr   distutils.archive_utilr   r   r   r   r   distutils.spawnr	   distutils.testsr
   os.pathr   r   rH   test.supportr   unix_compatr   r   r   r   r   r   r%   r/   TempdirManagerr1   r   r&   r   <module>r      s   ' '      				  



  " " " " " "              " ! ! ! ! ! # # # # # #               P P P P P P P P P P P P P P
 
 
1 1 1A A Ap p p p p'0 p p p p pr&   